我有一个有几千个数字的字符串。我需要遍历字符串,找到按数字顺序排列的最长字符集。例如:
string = '1223123341223455'
该字符串中以数字顺序排列的最长字符串为1223455,长度为7个字符。以下是我目前所拥有的一个例子:
^{pr2}$它告诉我字符串索引超出了行的范围:
if string[a] <= string[b]
我的逻辑是:检查第一个数是否小于或等于第二个数。如果是,那两个数字是按数字顺序排列的。将第一个数字添加到空字符串中。一直这样做,直到遇到第一个数大于第二个数的点。到达这一点后,将所拥有的保存为字符串,并从上次停止的地方继续,但这次将累积的数字连接到另一个字符串。当你有两个数字串后,比较这两个串,取较高的一个。继续此操作,直到处理完字符串。我希望这有道理,有点难以解释。在
首先,确保您有几个东西要测试,以及预期的结果,包括边界情况。在
}
然后搜索最长的字符串,而不将迄今为止找到的实际字符附加到某个临时字符串中。这是低效的。您只需知道最长字符串的起始索引及其长度:
^{pr2}$现在在测试用例上运行这个并检查输出:
^{3}$问题是您将
a
增加了太多次。因此,当a等于字符串的长度(a = 16
)时,程序将中断。将第三行更改为while a < len(string):
应该可以修复它。在另外,我不太确定你在用变量做什么。你声明r1,它从来没有被使用过,你使用r2却没有声明它。这个问题可以比您的方法更容易解决—下面的代码似乎可以满足您的需要:
字符串的索引为0。因此,如果您尝试访问^{cd1>},您将得到^{cd2>}因为该字符串的最高索引是^{{cd3>}。将^{cd4>}条件更改为:^{cd5>}。此外,您不应该使用^{{cd6>}作为变量,因为它可能会掩盖python^{{cd6>}模块名称。
相关问题 更多 >
编程相关推荐