我在另一个主题上找到了这段代码,但它按照连续字符排序子字符串,而不是按字母顺序排序。我如何纠正它按字母顺序?它打印出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