
题目描述:给定一个字符串数组 words 和一个字符 x,返回包含字符 x 的所有单词的索引列表。
示例:
输入:words = ["leet","code"], x = "e"
输出:[0, 1]
输入:words = ["abc","bcd","aaaa","cbc"], x = "a"
输出:[0, 2]
输入:words = ["abc","bcd","aaaa","cbc"], x = "z"
输出:[]
解法一:迭代法
该方法直接迭代 words 数组,检查每个单词是否包含字符 x。如果包含,则将该单词的索引添加到结果列表中。
<code class="java">class Solution {
public List<Integer> findWordsContaining(String[] words, char x) {
List<Integer> result = new ArrayList<>();
for (int i = 0; i < words.length; i++) {
if (words[i].indexOf(x) != -1) {
result.add(i);
}
}
return result;
}
}</code>解法二:流式处理
此方法利用 Java 8 的流式处理特性,更简洁地实现相同的功能。 IntStream.range 生成索引流,filter 筛选包含字符 x 的单词索引。
<code class="java">import java.util.List;
import java.util.ArrayList;
import java.util.stream.IntStream;
import java.util.stream.Collectors;
class Solution {
public List<Integer> findWordsContaining(String[] words, char x) {
return IntStream.range(0, words.length)
.filter(i -> words[i].indexOf(x) != -1)
.boxed()
.collect(Collectors.toList());
}
}</code>两种方法都能有效解决问题。迭代法更易于理解,而流式处理方法更简洁,但对于大型数组,性能可能略有差异,需要根据实际情况选择。
性能比较:
迭代法通常在性能上略优于流式处理方法,尤其是在处理大型数组时。 但是,流式处理方法的代码更简洁易读。 实际性能差异取决于 JVM 的优化以及数组大小。
结论:
两种方法都能解决问题,选择哪种方法取决于个人偏好和性能要求。 对于大多数情况,迭代法是一个不错的选择,因为它简单易懂且性能通常更好。 如果追求代码简洁性,并且数组规模不是特别大,则流式处理方法也是一个很好的选择。
以上就是Leetcode — 查找包含字符的单词的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号