// 1408. String Matching in an Array
class Solution {
public List<String> stringMatching(String[] words) {
List<String> ans = new ArrayList<>();
String allWords = String.join(",", words);
for (String word : words) {
if (allWords.indexOf(word) != allWords.lastIndexOf(word)) {
ans.add(word);
}
}
return ans;
}
}
学习笔记: 这里使用的是一个String.join()函数,传入分隔符后可以传入数组或者迭代器。 这种方式比用StringBuilder再转回String还剩了1.3M的内存。 接下来就是最巧妙的地方了,从前往后找和从后往前找,找到这个单词两次也就是索引不同,找到这个单词一次就是索引相同。