LeetCode 1662. Check If Two String Arrays are Equivalent Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
1662. Check If Two String Arrays are Equivalent

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

Solutions

Solution 1: String Concatenation

Concatenate the strings in the two arrays into two strings, then compare whether the two strings are equal.

The time complexity is O(m), and the space complexity is O(m). Here, m is the total length of the strings in the arrays.

PythonJavaC++GoTypeScriptRustC
class Solution: def arrayStringsAreEqual(self, word1: List[str], word2: List[str]) -> bool: return ''.join(word1) == ''.join(word2)(code-box)

Solution 2: Direct Traversal

In Solution 1, we concatenated the strings in the two arrays into two new strings, which has additional space overhead. We can also directly traverse the two arrays and compare the characters one by one.

We use two pointers i and j to point to the two string arrays, and another two pointers x and y to point to the corresponding characters in the strings. Initially, i = j = x = y = 0.

Each time we compare word1[i][x] and word2[j][y]. If they are not equal, we directly return false. Otherwise, we increment x and y by 1. If x or y exceeds the length of the corresponding string, we increment the corresponding string pointer i or j by 1, and then reset x and y to 0.

If both string arrays are traversed, we return true, otherwise, we return false.

The time complexity is O(m), and the space complexity is O(1). Here, m is the total length of the strings in the arrays.

PythonJavaC++GoTypeScriptRust
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)(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !