Ben this problem.piton - sadece 'a', 'b' veya
Maggu için kodlama edildi 'c' ihtiva Altdizgelerin sadece play okulu katıldı. Öğretmeni ona A, a, B, b, C, c. Bu mektuplardan çok etkileniyor ve şimdi sadece bu harfleri içeren dizelere bakıyor. Ama küçük bir adam olduğunu söylediğim gibi, bu tür alt dizilerin sayısını tek başına hesaplayamaz. Bu dizelerin sayısını bulun.
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)
Bence harfe sorunu azaltabilir fark etti. Kodu yazdım ama geniş dizeler için etkili değil. Ve büyük ölçüde son derece geniş dizeleri kastediyorum. Çok zaman harcayan
substrings
işlevinin olduğunu fark ettim.
substrings
işlevinin zaman tüketimini nasıl azaltabilirim? Başka bir kodla değiştirebilir miyim?
Teşekkürler.
Python 2 ile bir gelişme. U, 'range' yerine' xrange' kullanmalıdır. Büyük sayı – qvpham
@julivico İyi fikir için daha fazla performans. 'xrange', Python 2'deki 'range'den çok daha hızlıdır. –
(x (int (raw_input())) aralığında x için kod ile ne yapmak istersiniz ?: l.append (raw_input(). lower ()) ' – qvpham