0

特定の文字列からアルファベット順に最も長い部分文字列を見つける質問に取り組んでいます。私は C++ の経験が豊富ですが、Python はまったくの初心者です。私はこのコードを書いた

s = raw_input("Enter a sentence:")

a=0   #start int
b=0   #end integer
l=0   #length
i=0

for i in range(len(s)-1):
    j=i
    if j!=len(s)-1:
    while s[j]<=s[j+1]:
        j+=1
    if j-i>l:  #length of current longest substring is greater than stored substring
        l=j-i
        a=i
        b=j

print 'Longest alphabetical string is ',s[i:j]

しかし、私はこのエラーを受け取り続けます

Traceback (most recent call last):
  File "E:/python/alphabetical.py", line 13, in <module>
    while s[j]<=s[j+1]:
IndexError: string index out of range

ここで何が間違っていますか?繰り返しますが、私はpythonが初めてです!

4

2 に答える 2

0
while s[j]<=s[j+1]:
    j+=1

糸の端からはみ出すことがあります。

試す:

while j!=len(s)-1 and s[j]<=s[j+1]:
    j+=1

また、アルファベット順のシーケンスの終わりを見つけた場合の意味についても考えてみてください。そのシーケンス内の後の位置から始まる長いシーケンスをチェックする理由はありますか?

于 2013-10-26T09:07:00.863 に答える