我在另一個主題上找到了這段代碼,但它按照連續字符排序子字符串,而不是按字母順序排序。我如何糾正它按字母順序?它打印出lk
,我想打印ccl
。由於按字母順序查找最長的子字符串
PS:我是在Python初學者
s = 'cyqfjhcclkbxpbojgkar'
from itertools import count
def long_alphabet(input_string):
maxsubstr = input_string[0:0] # empty slice (to accept subclasses of str)
for start in range(len(input_string)): # O(n)
for end in count(start + len(maxsubstr) + 1): # O(m)
substr = input_string[start:end] # O(m)
if len(set(substr)) != (end - start): # found duplicates or EOS
break
if (ord(max(sorted(substr))) - ord(min(sorted(substr))) + 1) == len(substr):
maxsubstr = substr
return maxsubstr
bla = (long_alphabet(s))
print "Longest substring in alphabetical order is: %s" %bla
什麼是 「最長的按字母順序」 是什麼意思?你打印的一個值如何以任何順序? –
嘿,歡迎來到StackOverflow!如果你自己解決問題並[描述你所嘗試的](http://whathaveyoutried.com),我們更有可能幫助你。檢查堆棧溢出[問題清單](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)以獲取有關詢問正確問題的更多信息。祝你好運,快樂的編碼! –
你好,謝謝你的回答:例如,如果s ='tjkocgygiwc'字母順序中最長的子字符串是'jko',我現在不會怎麼做才能找到'jko',程序找到jk。 'wvcdcgykkaypy'發現'wv'而不是'cgy' – spacegame