The Problem
Given two string arrays
word1
andword2
, return true if the two arrays represent the same string, andfalse
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 <= 10^3
1 <= word1[i].length, word2[i].length <= 10^3
1 <= sum(word1[i].length), sum(word2[i].length) <= 10^3
-
word1[i]
andword2[i]
consist of lowercase letters.
My Tests
import pytest
from .Day8 import Solution
s = Solution()
@pytest.mark.parametrize(
"word1,word2,expected",
[
(["ab", "c"], ["a", "bc"], True),
(["a", "cb"], ["ab", "c"], False),
(["abc", "d", "defg"], ["abcddefg"], True),
],
)
def test_array_strings_are_equal(word1, word2, expected):
assert s.arrayStringsAreEqual(word1, word2) == expected
My Solution
from typing import List
class Solution:
def arrayStringsAreEqual(self, word1: List[str], word2: List[str]) -> bool:
return "".join(map(str, word1)) == "".join(map(str, word2))
Analysis
My Commentary
Not much to say about this one really. It's running in O(n). Not sure how to squeeze much more out of it.
We convert each list to a single string and compare them.
Top comments (2)
You can optimize for memory and a much better time complexity for best-case scenarios.
That's cool. Thank you!
I did a python version of it to test it out: