在给定字符串中查找最长空白序列的长度的算法

Ven*_*nki 7 algorithm

寻找一种算法来查找给定字符串中最长的空白序列的长度,检查尽可能少的字符?

提示:随着空白序列的长度增加,您的程序应该变得更快.

我知道解决方案是O(n)..但寻找更优化的解决方案

Bri*_*ndy 7

您将无法找到比O(n)更小的复杂度的解决方案,因为您需要在最坏情况下使用最多具有0或1个连续空格的输入字符串来传递每个字符,或者完全是空格.

你可以做一些优化,但它仍然被认为是O(n).

例如:

当你浏览列表时,让M成为当前最长的匹配.还假设您可以访问O(1)中的输入元素,例如您有一个数组作为输入.

当您看到非空格时,如果current + M非空格,则可以跳过M个元素.当然没有比M更长的空白.

当你看到一个whitepsace角色时,如果current + M-1不是空白,你知道你没有最长的跑步,你也可以跳过这种情况.


Pet*_*hev 6

但在最坏的情况下(当所有字符都是空白时),你必须检查每个字符.所以它在复杂性方面不能比O(n)更好.

基本原理:假设整个字符串为空,您没有检查N个字符和算法输出n.然后,如果任何未检查的字符不是空白,您的答案将是错误的.因此,对于此特定输入,您必须检查整个字符串.

  • @Pavel Shved:小心提出一种从不检查每个角色的算法?如果没有,请删除您的投票. (3认同)
  • 如果字符串只包含空白字符,请告诉我你不会检查每个字符. (2认同)