Description
Given two string arrays word1
and word2
, return true
if the two arrays represent the same string, and false
otherwise.
A string is represented by an array if the array elements concatenated in order forms the string.
Example 1:
Input: word1 = ["ab", "c"], word2 = ["a", "bc"] Output: true Explanation: word1 represents string "ab" + "c" -> "abc" word2 represents string "a" + "bc" -> "abc" The strings are the same, so return true.
Example 2:
Input: word1 = ["a", "cb"], word2 = ["ab", "c"] Output: false
Example 3:
Input: word1 = ["abc", "d", "defg"], word2 = ["abcddefg"] Output: true
Constraints:
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]
andword2[i]
consist of lowercase letters.
Solution
Python3
class Solution:
def arrayStringsAreEqual(self, word1: List[str], word2: List[str]) -> bool:
M, N = len(word1), len(word2)
i = j = 0
p1 = p2 = 0
while i < M and j < N:
while p1 < len(word1[i]) and p2 < len(word2[j]):
if word1[i][p1] != word2[j][p2]:
return False
p1 += 1
p2 += 1
if p1 == len(word1[i]):
i += 1
p1 = 0
if p2 == len(word2[j]):
j += 1
p2 = 0
return i == M and j == N
C++
class Solution {
public:
bool arrayStringsAreEqual(vector<string>& word1, vector<string>& word2) {
string s1 = "", s2 = "";
for (auto w : word1) s1 += w;
for (auto w: word2) s2 += w;
return s1 == s2;
}
};