【发布时间】:2012-09-14 05:00:09
【问题描述】:
如何在 C++ 或 Java 中检查一个字符串是否存在于长度为 100,000 个字符的较大字符串中?
我知道一个方法str.find("sub_string");,但它不能处理这么大的字符串。
最长执行时间为 1 秒。
我需要查找的子字符串也可以是 50,000!
【问题讨论】:
-
你想要哪个? C ++或Java或两者兼而有之?每个人的答案都不一样。
-
您不可能期望任何算法在一秒钟内执行此操作。执行时间必须在 O(n) 到 O(n^2) 之间,或者更糟。
-
为什么这是一个 SO 问题?只需使用您喜欢的string search algorithm 编写满足您需要的代码。正如所问的,这太模糊了,无法回答,因为它没有给我们提供足够的信息来选择合适的算法。 (从搜索到搜索,子串有变化吗?字符串是不是均匀分布的字符?子串是否包含稀有的内部子串?等等。)
-
c++ 或 java...它们中的任何一个都可以工作...
-
@Drise 绝对是
O(n)。但是无论如何,100,000 应该可以在 1 秒内完成。