私はこのコードを別のトピックで見つけましたが、アルファベット順ではなく連続した文字で部分文字列をソートします。どのようにアルファベット順に修正するのですか?それはlk
を印刷し、ccl
を印刷したいと思います。おかげアルファベット順に最長の部分文字列を見つける
PS:これまで
if len(set(substr)) != (end - start): # found duplicates or EOS
break
if (ord(max(sorted(substr))) - ord(min(sorted(substr))) + 1) == len(substr):
:あなたの例の入力のためのccl
が表示されます
私は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
"アルファベット順で最も長い" とは何を意味するのでしょうか?あなたがプリントする1つの値はどのようにして順番どおりにできますか? –
ねえ、ようこそ、StackOverflow!私たちは、あなた自身が問題に悩まされた場合(あなたが試したことを説明してください)(http://whathaveyoutried.com)、あなたを助けることができる可能性が非常に高いです。適切な質問の詳細については、スタックオーバーフロー[質問チェックリスト](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)を参照してください。幸運と幸せなコーディング! –
こんにちは、お返事ありがとうございます。たとえば、s = 'tjkocgygiwc'の場合、アルファベット順の最長部分文字列は 'jko'です。この「jko」を見つける方法はありません。プログラムはjkを見つけます。 'wvcdcgykkaypy'で 'wv'と 'cgy'が見つからない – spacegame