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.
Companies: Apple, Amazon, Facebook
Similar Questions:
Hints:
- Concatenate all strings in the first array into a single string in the given order, the same for the second array.
- Both arrays represent the same string if and only if the generated strings are the same.
// OJ: https://leetcode.com/problems/check-if-two-string-arrays-are-equivalent/
// Author: github.com/lzl124631x
// Time: O(A + B)
// Space: O(A + B)
class Solution {
public:
bool arrayStringsAreEqual(vector<string>& A, vector<string>& B) {
string a, b;
for (auto &x : A) a += x;
for (auto &x : B) b += x;
return a == b;
}
};
// OJ: https://leetcode.com/problems/check-if-two-string-arrays-are-equivalent/
// Author: github.com/lzl124631x
// Time: O(A + B)
// Space: O(1)
class Solution {
public:
bool arrayStringsAreEqual(vector<string>& A, vector<string>& B) {
int i = 0, a = 0, j = 0, b = 0;
while (i < A.size() && j < B.size()) {
if (A[i][a] != B[j][b]) return false;
if (++a >= A[i].size()) ++i, a = 0;
if (++b >= B[j].size()) ++j, b = 0;
}
return i == A.size() && j == B.size();
}
};