返回最长的字母子字符串

时间:2015-08-25 20:53:57

标签: python string python-2.7 alphabetical

该程序的目的是打印变量s中按字母顺序排列的最长子字符串。

RuntimeError: <Process(executeJobs) object at 0x7f3542880890> has terminated and cannot be interrupted.

运行时,程序不会打印任何内容。我似乎没有看到代码有什么问题。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:3)

我将regex用于此

import re
string = 'abchae'
alphstring = re.compile(r'a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*', re.I)

longest = ''
for match in alphstring.finditer(string):
    if len(match.group()) > len(longest):
        longest = match.group()

print(longest)

输出:

abch

注意:正则表达式中的标志re.I会导致正则表达式忽略大小写。如果这不是所需的行为,您可以删除该标志,它只匹配小写字符。

答案 1 :(得分:0)

就像Kasramvd所说,我不明白你的代码背后的逻辑。您确定您的代码可以在不抬高IndentationError的情况下运行吗?就我而言,以下部分(第二行,有错误的缩进)。

for number in range(0,len(s)): if s[number] == char: n = number

如果您修复了缩进错误,则可以无错误地运行代码,最后一行(print longest)可以正常工作,它只是按预期工作,它只打印一个空行。

答案 2 :(得分:0)

这是我的解决方案:

result = ""
s = 'abchae'
alphabet = 'abcdefghijklmnopqrstuvwxyz'
max_length=0
for i in range(len(s)):
    for j in range(len(s)):
        if s[i:j] in alphabet and len(s[i:j])>max_length:
            max_length = len(s[i:j])
            result = s[i:j]
print result

答案 3 :(得分:0)

我想我理解你的意思。

首先,您需要修复代码中的缩进问题,以使其运行:

for number in range(0,len(s)): if s[number] == char: n = number

其次,该条件将返回两个数字04,因为as中出现两次。我相信你只想要第一个,所以你应该在找到匹配后添加break语句。

for number in range(0,len(s)): if s[number] == char: n = number break

最后,alphstring in alphabet == True将始终返回False。由于alphabet永远不会是True,因此您需要使用括号来完成此工作或删除== True

ex:while (alphstring in alphabet) == True and n+nxtchar <= 5:

我相信您正在寻找字符串abch,这是我通过这些更改获得的