【发布时间】:2013-06-09 18:25:30
【问题描述】:
我想要一种算法来查找给定字符串中最长的不包含重复字符的子字符串。我可以想到一个 O(n*n) 算法,它考虑给定字符串的所有子字符串并计算非重复字符的数量。例如,考虑字符串“AABGAKG”,其中唯一字符的最长子字符串为 5 个字符,对应于 BGAKG。
任何人都可以提出更好的方法吗?
谢谢
编辑:我认为我无法向其他人正确解释我的问题。您可以在子字符串中包含重复字符(这并不是说我们需要 geeksforgeeks 解决方案所做的子字符串中的所有不同字符)。我必须找到的东西是任何子字符串中的最大不重复字符(可能是某些字符重复的情况)。
例如,说字符串是 AABGAKGIMN 那么 BGAKGIMN 就是解决方案。
【问题讨论】:
-
当前形式的相当离题的问题,但请考虑如何在此处使用
std::set。 -
你可以使用哈希表并维护2个索引和一个计数器,想想吧。你会在O(n)内得到它
-
这里是你应该看到的链接,但我建议你先尝试自己解决........geeksforgeeks.org/…
-
如果您正在考虑 all 子字符串,它是
O(n^3)而不是O(n^2)但是,正如 Omkant 所说,有一个 @ 987654325@这个问题的解决方案。 -
为什么 ABGKMN 不是解决方案?
标签: string algorithm language-agnostic