【发布时间】:2016-10-08 08:13:14
【问题描述】:
假设我有一个类似100110001010001 的字符串。我想找到这样的子字符串:
- 尽可能长
- 总和>0
所以最长的子串,1 比 0 多。
例如,100110001010001 上面的字符串将是:[10011]000[101]000[1]
实际上找到它们的总长度是令人满意的,在这种情况下:9。
不幸的是,我不知道如何不以蛮力的方式完成。请问有什么想法吗?
【问题讨论】:
-
更正我,但符合您条件的最长子序列 100110001010001 是 100110001010001。
-
@Robert,刚刚编辑过。子串,你是对的。
-
找到一个好的算法总是从彻底分析你的需求开始,这样你就能很好地理解它们。正如您所说,@Robert 仍然是正确的。显然,这不是你想要的,但然后试着准确地表达你想要的。这将使您(和我们)获得一半的答案。
-
我认为您应该简单地遍历整个字符串并保存“1”的第一次和最后一次出现的索引。然后,您可以简单地从最后一个索引中减去第一个索引,加 1,您就可以得到所需的最长子序列长度。
-
相关:Longest positive sum substring(只需将
0替换为实际的-1)
标签: algorithm math data-structures