Python 3.x 在较长的字符串中查找最长的字母顺序子字符串
我曾经尝试过编写这段代码,但它并没有始终如一地解决问题。通常它不会输出字符串中的第一个和最后一个字符。我不知道我哪里出了问题,在这一点上我有点不知所措,有人能给我解释一下我的代码哪里出了问题,以及如何修复它吗Python 3.x 在较长的字符串中查找最长的字母顺序子字符串,python-3.x,Python 3.x,我曾经尝试过编写这段代码,但它并没有始终如一地解决问题。通常它不会输出字符串中的第一个和最后一个字符。我不知道我哪里出了问题,在这一点上我有点不知所措,有人能给我解释一下我的代码哪里出了问题,以及如何修复它吗 s = ' abcdekyuuhhoowhoiwv ' longS = '' tempS = '' for x in range(len(s)-1): if s[x] <= s[x+1]: longS += s[x+1] if len(long
s = ' abcdekyuuhhoowhoiwv '
longS = ''
tempS = ''
for x in range(len(s)-1):
if s[x] <= s[x+1]:
longS += s[x+1]
if len(longS) < len(tempS):
tempS = longS
else:
tempS = s[x+1]
print('Longest substring in alphabetical order is: ' + str(longS))
s='abcdekyuhuohohowiwv'
长=“”
tempS=''
对于范围内的x(透镜-1):
如果可以避免在循环中使用索引,那么s[x]Python就容易多了。它的设计是为了让这变得容易,因为索引本身很难被一个错误所忽略。例如,在您的代码中,您从不使用s[x]
,因此您总是错过字符串的第一个字母
解决这个问题的一种方法是跟踪变量中的最后一个字母。用第一个字母初始化,然后迭代其余字母。然后它变得非常可读:
s = 'abcdekyuuhhoowhoiwv'
# initialize
last = s[0]
current = last
longest = last
# loop letters starting at the second
for letter in s[1:]:
if letter >= last:
current += letter
else:
current = letter
if len(current) > len(longest):
longest = current
last = letter
print(longest)
# 'abcdeky'
此外,我没有测试上面的空字符串,但如果有可能的话,您可能应该测试。我使用的是动态编程。我的解决方案还输出许多解决方案(如果存在)
s=input()
a=[1]
对于范围(1,len)中的i:
如果作战需求文件[i-1]),预期输出是什么?