一、题目
给你两个字符串数组 word1
和 word2
。如果两个数组表示的字符串相同,返回 true
;否则,返回 false
。
数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。
二、示例
2.1> 示例 1:
【输入】word1 = ["ab", "c"], word2 = ["a", "bc"] 【输出】true 【解释】word1 表示的字符串为 "ab" "c" -> "abc";word2 表示的字符串为 "a" "bc" -> "abc";两个字符串相同,返回 true
2.2> 示例 2:
【输入】word1 = ["a", "cb"], word2 = ["ab", "c"] 【输出】false
2.3> 示例 3:
【输入】word1 = ["abc", "d", "defg"], word2 = ["abcddefg"] 【输出】true
提示:
- •
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]
和word2[i]
由 小写字母 组成
三、解题思路
根据本题描述,要分别将两个字符串数组中所有的字符串进行拼装,如果两个字符串最终的拼装结果是彼此相等的,则返回true,否则返回false。那么,我们只需要实现最终字符串拼装,然后再通过equals(...)
对比即可。
下面有两种实现方式:
方式1:通过String的
join(...)
方法来拼装数组中的每个字符串元素。 方式2:分别循环遍历每个字符串数组,然后通过调用StringBuilder的append(...)
方法进行拼装。
本题思路很简单,就画图解释了。具体实现,请见如下代码所示。
四、代码实现
4.1> 通过String的join(...)实现
代码语言:javascript复制class Solution {
public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
return String.join("", word1).equals(String.join("", word2));
}
}
4.2> 通过StringBuilder的append(...)实现
代码语言:javascript复制class Solution {
public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
StringBuilder sb1 = new StringBuilder(), sb2 = new StringBuilder();
for (String word : word1) sb1.append(word);
for (String word : word2) sb2.append(word);
return sb1.toString().equals(sb2.toString());
}
}