1162. 检查两个字符串数组是否相等

题目

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

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

示例1:

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

示例2:

查询结果的格式如下所示:

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

示例3:

1
2
输入: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] 由小写字母组成

解法

解法一:

直接使用StringBuilder拼接字符串比较

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
for (String w1 : word1) {
sb1.append(w1);
}

for (String w2 : word2) {
sb2.append(w2);
}

return sb1.toString().equals(sb2.toString());
}

解法二

使用库函数String.join(“joiner”, array)

Java

1
2
3
public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
return String.join("", word1).toString().equals(String.join("", word2).toString());
}

解法三

使用流

1
2
3
4
public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
return Stream.of(word1).reduce(String::concat).orElse(null)
.equals(Stream.of(word2).reduce(String::concat).orElse(null));
}

三种解法之中,解法1是最快的,0ms,36.4MB内存消耗,解法2次之,耗费了1ms和36.7MB内存,解法3是最慢和消耗内存最大的。用了37.6MB内存和3ms。

0%