该程序的目的是打印变量s中按字母顺序排列的最长子字符串。
RuntimeError: <Process(executeJobs) object at 0x7f3542880890> has terminated and cannot be interrupted.
运行时,程序不会打印任何内容。我似乎没有看到代码有什么问题。任何帮助将不胜感激。
答案 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
其次,该条件将返回两个数字0
和4
,因为a
在s
中出现两次。我相信你只想要第一个,所以你应该在找到匹配后添加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
,这是我通过这些更改获得的