题目描述:给定一个
字符串数组
和一个字符
,返回包含字符
的所有单词的索引列表。
示例:
输入:
,
输出:
输入:
,
输出:
输入:
,
输出:
解法一:迭代法
该方法直接迭代
数组,检查每个单词是否包含字符
。如果包含,则将该单词的索引添加到结果列表中。
解法二:流式处理
此方法利用 Java 8 的流式处理特性,更简洁地实现相同的功能。
生成索引流,
筛选包含字符
的单词索引。
php字符串与byte字节数组转化类
php字符串与byte字节数组转化类
下载
两种方法都能有效解决问题。迭代法更易于理解,而流式处理方法更简洁,但对于大型数组,性能可能略有差异,需要根据实际情况选择。
性能比较:
迭代法通常在性能上略优于流式处理方法,尤其是在处理大型数组时。 但是,流式处理方法的代码更简洁易读。 实际性能差异取决于 JVM 的优化以及数组大小。
结论:
两种方法都能解决问题,选择哪种方法取决于个人偏好和性能要求。 对于大多数情况,迭代法是一个不错的选择,因为它简单易懂且性能通常更好。 如果追求代码简洁性,并且数组规模不是特别大,则流式处理方法也是一个很好的选择。
wordsxxwords = ["leet","code"]x = "e"[0, 1]words = ["abc","bcd","aaaa","cbc"]x = "a"[0, 2]words = ["abc","bcd","aaaa","cbc"]x = "z"[]wordsxclass Solution {
public List findWordsContaining(String[] words, char x) {
List result = new ArrayList<>();
for (int i = 0; i < words.length; i++) {
if (words[i].indexOf(x) != -1) {
result.add(i);
}
}
return result;
}
} IntStream.rangefilterximport java.util.List;
import java.util.ArrayList;
import java.util.stream.IntStream;
import java.util.stream.Collectors;
class Solution {
public List findWordsContaining(String[] words, char x) {
return IntStream.range(0, words.length)
.filter(i -> words[i].indexOf(x) != -1)
.boxed()
.collect(Collectors.toList());
}
} 