【2022-11-01每日一题】1662. 检查两个字符串数组是否相等[Easy]

2022-11-01
1分钟阅读时长

2022-11-01每日一题:1662. 检查两个字符串数组是否相等

难度:Easy

标签:数组 、 字符串

给你两个字符串数组 word1word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false

数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。

 

示例 1:

输入:word1 = ["ab", "c"], word2 = ["a", "bc"]
输出:true
解释:
word1 表示的字符串为 "ab" + "c" -> "abc"
word2 表示的字符串为 "a" + "bc" -> "abc"
两个字符串相同,返回 true

示例 2:

输入:word1 = ["a", "cb"], word2 = ["ab", "c"]
输出:false

示例 3:

输入:word1  = ["abc", "d", "defg"], word2 = ["abcddefg"]
输出:true

 

提示:

  • 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]word2[i] 由小写字母组成

方法一:直接拼接字符进行比较

详细思路过程见官方题解,这里只做个人刷题记录,方便后续查询阅读

func arrayStringsAreEqual(word1 []string, word2 []string) bool {
    return strings.Join(word1, "") == strings.Join(word2, "")
}

复杂度分析

  • 时间复杂度:O(n + m)。
  • 空间复杂度:O(n + m)。

方法二:各个遍历比较

func arrayStringsAreEqual(word1 []string, word2 []string) bool {
	var p1, p2, i, j int
    for p1 < len(word1) && p2 < len(word2) {
        if word1[p1][i] != word2[p2][j] {
            return false
        }
        i, j = i+1, j+1
        if i == len(word1[p1]) {
            i, p1 = 0, p1+1
        }
        if j == len(word2[p2]) {
            j, p2 = 0, p2+1
        }
    }
    return p1 == len(word1) && p2 == len(word2)
}

复杂度分析

  • 时间复杂度:O(n + m)。
  • 空间复杂度:O(1)。

LeetCode题库地址