力扣1662(java&python)-检查两个字符串数组是否相等(简单)
题目:
给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false 。
数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。
示例 1:
输入:word1 = ["ab", "c"], word2 = ["a", "bc"]
输出:true
解释:
word1 表示的字符串为 "ab" + "c" -> "abc"
word2 表示的字符串为 "a" + "bc" -> "abc"
两个字符串相同,返回 true
示例 2:
输入:word1 = ["a", "cb"], word2 = ["ab", "c"]
输出:false
示例 3:
输入:word1 = ["abc", "d", "defg"], word2 = ["abcddefg"]
输出:true
提示:
- 1 <= word1.length, word2.length <= 103
- 1 <= word1[i].length, word2[i].length <= 103
- 1 <= sum(word1[i].length), sum(word2[i].length) <= 103
- word1[i] 和 word2[i] 由小写字母组成
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/check-if-two-string-arrays-are-equivalent
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
一、字符串拼接
直接将两个数组中的字符串进行拼接,然后再比较两个字符串是否相等。
java代码:
1 class Solution { 2 public boolean arrayStringsAreEqual(String[] word1, String[] word2) { 3 StringBuilder sb1 = new StringBuilder(); 4 StringBuilder sb2 = new StringBuilder(); 5 for(int i = 0; i < word1.length; i++){ 6 sb1.append(word1[i]); 7 } 8 for(int i = 0; i < word2.length; i++){ 9 sb2.append(word2[i]); 10 } 11 return sb1.toString().equals(sb2.toString()); 12 } 13 }
代码优化:
1 class Solution { 2 public boolean arrayStringsAreEqual(String[] word1, String[] word2) { 3 return String.join("", word1).equals(String.join("", word2)); 4 } 5 }
二、遍历
设置两个指针w1和w2,分别表示遍历到 word1[w1] 和 word2[w2] ,另外设置两个指针 i 和 j,表示 word1[w1][i] 和 word2[w2][j] ,如果 word1[w1][i] 不等于 word2[w2][j],直接返回false.否则,就是相等,让i + 1,如果 i == word1[w1].length(),说明已经遍历到 w1的末尾。需要遍历下一个字符串了,这时让w1+1,i 重置为0,j与i同样处理。最终判断条件:w1 == word1.length && w2 == word2.length,成立返回true,不成立返回false。
java代码:
1 class Solution { 2 public boolean arrayStringsAreEqual(String[] word1, String[] word2) { 3 int w1 = 0, i = 0; 4 int w2 = 0, j = 0; 5 while(w1 < word1.length && w2 < word2.length){ 6 if(word1[w1].charAt(i) != word2[w2].charAt(j)){ 7 return false; 8 } 9 i++; 10 //当一个单词遍历结束后,遍历下一个单词,重置i 11 if(i == word1[w1].length()){ 12 i = 0; 13 w1++; 14 } 15 j++; 16 //当一个单词遍历结束后,遍历下一个单词,重置j 17 if(j == word2[w2].length()){ 18 j = 0; 19 w2++; 20 } 21 } 22 return w1 == word1.length && w2 == word2.length; 23 } 24 }
python3代码:
1 class Solution: 2 def arrayStringsAreEqual(self, word1: List[str], word2: List[str]) -> bool: 3 w1 = w2 = i = j = 0 4 while w1 < len(word1) and w2 < len(word2): 5 if word1[w1][i] != word2[w2][j]: 6 return False 7 i += 1 8 if i == len(word1[w1]): 9 w1 += 1 10 i = 0 11 j += 1 12 if j == len(word2[w2]): 13 w2 += 1 14 j = 0 15 return w1 == len(word1) and w2 == len(word2)