1662. Check If Two String Arrays are Equivalent

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.

1
2
3
4
5
6
7
8
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.
1
2
3
4
Example 2:

Input: word1 = ["a", "cb"], word2 = ["ab", "c"]
Output: false
1
2
3
4
Example 3:

Input: word1  = ["abc", "d", "defg"], word2 = ["abcddefg"]
Output: true

Constraints:

  • 1 <= word1.length, word2.length <= 10^3
  • 1 <= word1[i].length, word2[i].length <= 10^3
  • 1 <= sum(word1[i].length), sum(word2[i].length) <= 103
  • word1[i] and word2[i] consist of lowercase letters.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class Solution {
    public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
        int len1 = word1.length;
        int len2 = word2.length;
        
        int part1Index = 0;
        int part2Index = 0;
        int i = 0;
        int j = 0;
        int all1 = countLetters(word1);
        int all2 = countLetters(word2);
        if (all1 != all2) return false;
        int seen1 = 0;
        int seen2 = 0;
        while (part1Index < len1 && part2Index < len2) {
            String w1 = word1[part1Index];
            String w2 = word2[part2Index];
            
            if (i == w1.length()) {
                i = 0;
                part1Index++;
                continue;
            }
            
            if (j == w2.length()) {
                j = 0;
                part2Index++;
                continue;
            }
            
            seen1++;
            seen2++;
            
            if (w1.charAt(i) != w2.charAt(j)) {
                return false;
            } else {
                i++;
                j++;
            }
        }
        
        if (seen1 != all1 || seen2 != all1) return false;
        
        return true;
    }
    
    int countLetters(String[] words) {
        int count = 0;
        for (int i = 0; i< words.length; i++) {
            count += words[i].length();
        }
        return count;
    }
}