列表中的 SubString

SubString in List

提问人:Eugene Shevchugov 提问时间:11/20/2020 更新时间:11/20/2020 访问量:95

问:

我有一个类和方法

class Dictionary {
    public Dictionary(List<String> dic) {
        // ...
    }
    
    public int getCount(String substr) {
        // ...
    }
}

应该发生什么:
方法 getCount 中,您需要使用类构造函数中的列表并查找从子字符串子线程开始的所有字符串

我在面试中使用了这个解决方案

return (int) this.dic.stream().filter(s -> s.startsWith(substr)).count();

复杂度为 O(n)

有更好的解决方案吗?

谢谢!

Java 轻量级流 API

评论

0赞 Robert 11/20/2020
您可以对列表进行排序,然后在找到不以搜索词开头的项目后停止搜索(但只有在找到搜索词后)。你可以通过开始字母来制作哈希和分组,然后只在桶中查找该字母。无论哪种方式,如果这不仅仅是针对学校,请在尝试优化之前进行剖析。
2赞 ControlAltDel 11/20/2020
你的解决方案看起来很好,就像你构建问题的方式一样。但通常情况下,字典不仅仅是一个 List<String>,它是一个排序的 List<String> 如果是这种情况,那么您可以使用修改后的二进制搜索来查找匹配的第一个子字符串,然后从那里进行交互,直到找到最后一个子字符串。找到最后一个后,您可以返回 - 没有其他条目匹配
1赞 Sᴀᴍ Onᴇᴌᴀ 11/20/2020
@pshemo,当建议用户在CR上发帖时,如果还有一个建议,比如“请阅读相关的帮助中心页面,如'我可以在这里问什么主题?'和'我如何提出一个好问题?',那就太好了。在当前形式中,上面的代码可能会因为偏离主题而被关闭,因为这些方法是存根......这种情况经常发生
0赞 Pshemo 11/20/2020
@S ᴀᴍOnᴇᴌᴀ 感谢您的指导。删除了我的评论,因为您声称问题(当前形式)不符合 CR 要求。

答: 暂无答案