我有一个有上千个数字的字符串我需要遍历字符串并找到按数字顺序排列的最长字符集例如:
string = '1223123341223455'
该字符串中按数字顺序排列的最长字符串为1223455,长度为7个字符。下面是我目前的一个例子:
r=r2=''
a=b=0
while a < len(string)+1:
if string[a] <= string[b]:
r += string[a]
else:
if len(r) < len(r2):
r = r2
a += 1
b += 1
它告诉我字符串索引超出了行上的范围:
if string[a] <= string[b]
我的逻辑是:检查第一个数字是否小于或等于第二个数字。如果是,那两个数字是按数字顺序排列的。将第一个数字添加到空字符串中继续这样做,直到遇到第一个数大于第二个数的点到达此点后,将所拥有的保存为字符串,并继续执行中断的操作,但这次将累积的数字连接到其他字符串。当你有了两个数字串后,比较这两个并取较高的一个。继续此操作,直到处理完字符串。我希望这有道理,有点难以解释。
最佳答案
字符串索引为0。因此,如果您尝试访问some_str[len(some_str)]
,您将得到一个IndexError
,因为该字符串的最高索引是len(some_str) - 1
。将while
条件更改为:while a < len(myString):
。另外,您不应该使用string
作为变量,因为它可能会覆盖pythonstring
模块名。
关于python - 在Python字符串中按数字顺序查找最长的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11477998/