题目概述(简单难度)
给你两个字符串数组 word1
和 word2
。如果两个数组表示的字符串相同,返回 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
附上leetcode链接:
点击此处进入leetcode
思路与代码
思路展现
这道题目通过分析我们可以得到是一定要去遍历数组和进行字符串拼接的的,那么就一定会用到循环,对于循环中进行字符串拼接的情况一般都要用到"+",但是会造成大量的额外空间,所以对于循环内部进行字符串拼接的情况我们一般都是用StringBuffer和StringBuilder类中的append方法,这样就不会生成额外的空间.单线程情况下用StringBuilder,多线程情况下用StringBuffer.此题目用两者都可.
代码示例
class Solution {
public boolean arrayStringsAreEqual(String[] words1, String[] words2) {
StringBuffer word1 = new StringBuffer();
StringBuffer word2 = new StringBuffer();
for(String w1 : words1) word1.append(w1);
for(String w2 : words2) word2.append(w2);
return word1.toString().equals(word2.toString());
}
}
总结
此题目重点考察StringBuffer和StringBuilder的使用,希望大家重点掌握.