文字のアルファベット順の最長部分文字列を返す関数を記述しようとしています。たとえば、s = 'azcbobobegghakl'
の場合、関数は 'beggh'を返します。アルファベット順に最長のアルファベット順の部分文字列を取得するには
これは私の関数ですが、まだ完全ではありませんが、サブのリストは返されません。
"IndexError: string index out of range"
def longest_substring(s):
sub=[]
for i in range (len(s)-1):
subs=s[i]
counter=i+1
while ord(s[i])<ord(s[counter]):
subs+=s[counter]
counter+=1
sub.append(subs)
return sub
counter'は 'LEN(複数可)を' '超えますか? 'while'ループであなたのケースがこの入力で失敗すると思います:' acdb'残りの文字をすべて第1文字 'a'と比較しようとしているので、' acdb'として答えが間違っています。 'acd'と思う.. –
https://en.wikipedia.org/wiki/Longest_increasing_subsequence –
@ cricket_007実際にはそうではない...サブシーケンスは要素をスキップすることができます! – wim