Определите длину самой длинной цепочки, состоящей только из символов A, B и C
Есть файл в котором записаны буквы A...Z. Необходимо, определите длину самой длинной цепочки, состоящей только из символов A, B и C. Моя проблема в том, что код ищет только длину цепочки состоящую из одинаковых букв. Как можно исправить код?
file = open("2.txt").read().strip()
count = 1
max_count = 1
symbols = ""
for i in range(len(file)-1):
if file[i] == file[i+1]:
count += 1
else:
count = 1
if count > max_count:
max_count = count
symbols = file[i]
print(symbols,max_count)
Ответы (3 шт):
Автор решения: Rendivy
→ Ссылка
file = open("4.txt")
st = file.read()
count = 0
max_count = 0
for x in st:
if x in "ABC":
count += 1
if count > max_count:
max_count = count
else:
count = 0
print(max_count)
Автор решения: Mikhailo
→ Ссылка
Можно сделать так:
file = open("2.txt").read().strip()
count = 0
max_count = 1
symbols = ""
for i in range(len(file)-1):
if file[i] >= 'A' and file[i] <= 'C':
count += 1
else:
count = 0
if count > max_count:
max_count = count
symbols = file[i]
print(symbols,max_count)
Автор решения: Zhihar
→ Ссылка
вариант 1 (решение в лоб):
text = "XABXCABBBCAADBXXBAADX"
max_size = 0
size = 0
for letter in text:
if letter in 'ABC':
size += 1
else:
if max_size < size:
max_size = size
size = 0
if max_size < size:
max_size = size
print(max_size)
вариант 2 (укороченный):
size, max_size = 0, 0
for letter in text:
size, max_size = (size + 1, max_size) if letter in 'ABC' else (0, size if max_size < size else max_size)
max_size = size if max_size < size else max_size
вариант 3 (однострочный):
правда тут небольшой изврат и работает помедленнее предыдущего:
res = max(map(len, ''.join(letter if letter in 'ABC' else ' ' for letter in text)).split())
вариант 3.1 (чуть-чуть покороче):
res = max(map(len, ''.join((' ', letter)[letter in 'ABC'] for letter in text).split()))