题目描述:给定一个字符串数组 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。如果包含,则将该单词的索引添加到结果列表中。
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; } }
解法二:流式处理
此方法利用 Java 8 的流式处理特性,更简洁地实现相同的功能。 IntStream.range 生成索引流,filter 筛选包含字符 x 的单词索引。
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()); } }
两种方法都能有效解决问题。迭代法更易于理解,而流式处理方法更简洁,但对于大型数组,性能可能略有差异,需要根据实际情况选择。
性能比较:
迭代法通常在性能上略优于流式处理方法,尤其是在处理大型数组时。 但是,流式处理方法的代码更简洁易读。 实际性能差异取决于 JVM 的优化以及数组大小。
结论:
两种方法都能解决问题,选择哪种方法取决于个人偏好和性能要求。 对于大多数情况,迭代法是一个不错的选择,因为它简单易懂且性能通常更好。 如果追求代码简洁性,并且数组规模不是特别大,则流式处理方法也是一个很好的选择。
以上就是Leetcode — 查找包含字符的单词的详细内容,更多请关注知识资源分享宝库其它相关文章!
版权声明
本站内容来源于互联网搬运,
仅限用于小范围内传播学习,请在下载后24小时内删除,
如果有侵权内容、不妥之处,请第一时间联系我们删除。敬请谅解!
E-mail:dpw1001@163.com
发表评论