Skip to content

Latest commit

 

History

History
 
 

1662

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

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] and word2[i] consist of lowercase letters.

Companies: Apple, Amazon, Facebook

Related Topics:
Array, String

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.

Solution 1. Brute Force

// 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;
    }
};

Solution 2.

// 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();
    }
};