随笔 - 384  文章 - 0  评论 - 0  阅读 - 13万

力扣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   我不想一直当菜鸟  阅读(226)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2021-11-01 14_收集表单数据
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示