1662.检查两个字符串数组是否相等
【LetMeFly】1662.检查两个字符串数组是否相等
力扣题目链接:https://leetcode.cn/problems/check-if-two-string-arrays-are-equivalent/
给你两个字符串数组 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]
由小写字母组成
方法一:字符串拼接
按题意就是问两个字符串数组分别拼接起来之后是否相等
那么直接把两个数组中的字符串分别拼接起来就好了
拼接起来之后比较一下是否相等就好
- 时间复杂度$O(N)$,其中$N$是字符总个数
- 空间复杂度$O(N)$
AC代码
C++
1 |
|
方法二:双指针(或者说“四指针”)
用一个指针指向数组1的第一维(同理用一个指针指向数组2的第一维)
用一个指针指向处理到了 数组1中第一维指针所指字符串的哪个元素(数组2同理)
我们需要数组1的“元素指针”和数组2的“元素指针”所指的元素时刻相同
一旦出现不同,就立刻返回false
当某个“元素指针”超出了所指字符串尾部时,“元素指针”归零,第一维指针后移。
说白了就是通过第一维指针的辅助,“元素指针”按顺序遍历了字符串数组的每一个元素。
这样,与方法一相比,优势在于不需要由于“拼接字符串”而开辟额外的空间了。
- 时间复杂度$O(N)$,其中$N$是字符总个数
- 空间复杂度$O(1)$
AC代码
C++
1 |
|
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/127641844
1662.检查两个字符串数组是否相等
https://blog.letmefly.xyz/2022/11/01/LeetCode 1662.检查两个字符串数组是否相等/