我想寫一個函數,它返回字母按字母順序出現的s中最長的子字符串。例如,如果s = 'azcbobobegghakl'
,函數應返回'beggh'如何獲得最長的按字母順序排列的子字符串
這是我的函數,它仍然不完整,但它不返回sub的列表; 返回的錯誤是:
"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(S)'?在'while'循環中,我認爲你的情況在這個輸入中失敗:'acdb',因爲你試圖比較所有剩餘的字符和第一個字符'a',所以它給出的答案是'acdb'這是錯誤的。答案應該是'acd'我認爲.. –
https://en.wikipedia.org/wiki/Longest_increasing_subsequence –
@ cricket_007實際上並不正確...子序列可以跳過元素! – wim