检查两个字符串数组是否相等【LC1662】
给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false 。
数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。
11月加油!好忙碌呀!刷题+背单词+听听力+实验室大小事+java+偶尔运动+练字,从来没觉得时间那么不够用过:(
拼接字符串
- 思路:借助StringBuilder将字符串数组拼接成字符串,比较最后字符串是否相同
- 实现
class Solution { public boolean arrayStringsAreEqual(String[] word1, String[] word2) { StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); for (int i= 0; i < word1.length; i++){ sb1.append(word1[i]); } for (int i= 0; i < word2.length; i++){ sb2.append(word2[i]); } return sb1.toString().equals(sb2.toString()); } }
- 复杂度
。时间复杂度:O(m+n)
。空间复杂度:O(m+n)
遍历
- 思路:使用双指针定位字符串数组中的数组,如果不相等则直接返回false,最后判断字符串数组1与字符串数组2的总长度是否相等,如果不相等,则返回false;相等则返回true
- 实现
。每个字符串数组需要两个指针定位字符word1[i].charAt[j]以及字符word1[m].charAt[n]
。如果定位到的字符不相等,则立即返回false
。最后判断指针i和指针m是否都越界,越界则代表字符串数组1与字符串数组2的总长度相等,返回true
- 代码
class Solution { public boolean arrayStringsAreEqual(String[] word1, String[] word2) { int i = 0,m = 0; int j = 0, n = 0; while (i < word1.length && m < word2.length){ if (j < word1[i].length() && n < word2[m].length()){ if (word1[i].charAt(j) != word2[m].charAt(n)){ return false; }else{ j++; n++; } } if (j >= word1[i].length()){ j = 0; i++; } if (n >= word2[m].length()){ n = 0; m++; } } return i >= word1.length && m >= word2.length; } }
- 复杂度
。时间复杂度:O(m+n)
。空间复杂度:O(1)