力扣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)

posted on 2022-11-01 09:39  我不想一直当菜鸟  阅读(214)  评论(0编辑  收藏  举报