【发布时间】:2014-09-03 06:31:11
【问题描述】:
我有一组字符串,我需要找出其中是否有一个特定的字符串。我只需要这样做一次(下次字符串不同)。
我正在考虑用桶排序对字符串进行排序,然后进行二进制搜索。
时间复杂度:O(n+k)+O(log n)
有没有更快/更好的解决方案?
对于 set,我的意思是更多的字符串,而不是 std::set。
【问题讨论】:
-
std::find是 O(n)。除非你指的是实际的std::set,在这种情况下它有一个find成员函数。 -
std::set::find是 O(log(n)) -
如果你只做一次,你不妨单独比较每个字符串。
-
std::unordered_set::find是 O(1) :p -
@quantdev - 在集合构建之后。搭建一套需要多少钱?
标签: c++ string sorting time compare