【发布时间】:2015-03-12 06:58:15
【问题描述】:
我正在学校学习 Python 2.7 课程,他们告诉我们创建以下程序:
假设 s 是一串小写字符。
编写一个程序,打印 s 中字母按字母顺序出现的最长子串。
例如,如果 s = azcbobobegghakl ,那么你的程序应该打印
按字母顺序排列的最长子串是:beggh
在平局的情况下,打印第一个子字符串。
例如,如果 s = 'abcbcd',那么你的程序应该打印
按字母顺序排列的最长子串是:abc
我写了以下代码:
s = 'czqriqfsqteavw'
string = ''
tempIndex = 0
prev = ''
curr = ''
index = 0
while index < len(s):
curr = s[index]
if index != 0:
if curr < prev:
if len(s[tempIndex:index]) > len(string):
string = s[tempIndex:index]
tempIndex=index
elif index == len(s)-1:
if len(s[tempIndex:index]) > len(string):
string = s[tempIndex:index+1]
prev = curr
index += 1
print 'Longest substring in alphabetical order is: ' + string
老师还给了我们一系列的测试字符串来试一试:
onyixlsttpmylw
pdxukpsimdj
yamcrzwwgquqqrpdxmgltap
dkaimdoviquyazmojtex
abcdefghijklmnopqrstuvwxyz
evyeorezmslyn
msbprjtwwnb
laymsbkrprvyuaieitpwpurp
munifxzwieqbhaymkeol
lzasroxnpjqhmpr
evjeewybqpc
vzpdfwbbwxpxsdpfak
zyxwvutsrqponmlkjihgfedcba
vzpdfwbbwxpxsdpfak
jlgpiprth
czqriqfsqteavw
除了最后一个,它们都可以正常工作,它会产生以下答案:
按字母顺序排列的最长子串是:cz
但它应该说:
按字母顺序最长的子串是:avw
我检查了代码一千次,没有发现错误。你能帮帮我吗?
【问题讨论】:
-
“我必须在下周一将这个提交给老师的邮箱”。这并不紧急! 'Due Monday' 的意思是'星期一做'。
标签: python string python-2.7