私はthis problem.のpython - 唯一の 'A'、 'B' または
Magguをコードして 'C' を含んでサブストリングはただの遊びスクールに参加しています。彼の教師は彼にA、a、B、b、C、cを教えました。彼はこれらの手紙に非常に魅了され、今ではこれらの文字のみを含む文字列を探しています。しかし、私は彼が小さな男だと言ったので、そのようなサブストリングの数だけを計算することはできません。そのような文字列の数を探します。
def substrings(string):
for size in range(1, len(string)+1):
for index in range(len(string)-size+1):
yield string[index:index+size]
l = []
for x in range(int(raw_input())):
l.append(raw_input().lower())
not_ = 'defghijklmnopqrstuvwxyz'
for string in l:
count = 0
for substr in substrings(string):
if all(letter not in substr for letter in not_):
count = count + 1
print(count)
私たちは小文字に問題を軽減できることに気づきました。コードを書きましたが、大きな文字列の場合は効率的ではありません。そして、大きなものでは私は例外的に大きな文字列を意味します。私はそれが多くの時間を費やしているsubstrings
機能であることに気づいた。 substrings
機能の時間消費をどのように減らすことができますか?他のコードで置き換えることはできますか?
ありがとうございました。
Python 2の改良点1つは、 'range'の代わりに' xrange'を使うべきです。それは大量のためのより多くの性能です – qvpham
@ julivico良いアイデア。 'xrange'はPython2の' range'よりもはるかに速いです。 –
'x for range(int(raw_input()))のコードで何をしたいのですか? l.append(raw_input()。lower )) ' – qvpham