每日一题:
检查两个字符串数组是否相等
解题思路:
我们使用两个指针 iii 和 jjj 分别指向两个字符串数组,用另外两个指针 xxx 和 yyy 分别指向字符串对应的字符。初始时 i=j=x=y=0i = j = x = y = 0i=j=x=y=0。
每次比较 word1[i][x]word1[i][x]word1[i][x] 和 word2[j][y]word2[j][y]word2[j][y],如果不相等,直接返回 false。否则,将 xxx 和 yyy 分别加 111,如果 xxx 或 yyy 超出了对应的字符串的长度,将对应的字符串指针 iii 或 jjj 加 111,然后将 xxx 和 yyy 重置为 000。
如果两个字符串数组遍历完毕,返回 true,否则返回 false。
时间复杂度 O(m)O(m)O(m),空间复杂度 O(1)O(1)O(1)。其中 mmm 为数组中字符串的总长度。
完整代码:
class Solution:
def arrayStringsAreEqual(self, word1: List[str], word2: List[str]) -> bool:
i = j = x = y = 0
while i < len(word1) and j < len(word2):
if word1[i][x] != word2[j][y]:
return False
x, y = x + 1, y + 1
if x == len(word1[i]):
x, i = 0, i + 1
if y == len(word2[j]):
y, j = 0, j + 1
return i == len(word1) and j == len(word2)