Не получается найти подстроку с наибольшим количеством подряд идущих символов
Необходимо найти подстроку с наибольшим количеством символов и вывести символ, а затем количество. пробовал разные библиотеки, в итоге остановился на простом цикле. Однако, если подстрока в начале строки, код работает исправно, а если нет, то теряется единица в счетчике
m = s[0]
k = 0
mx = 0
o = ''
for i in range(len(s)):
if s[i] == m:
k += 1
o = s[i]
else:
mx = max(k, mx)
k = 0
m = s[i]
print(o)
print(mx)
Ответы (2 шт):
Автор решения: MBo
→ Ссылка
Кажется достаточным начинать цикл с единицы (range(1, len(s)) и назначать k=1 в двух местах
s = 'aabbaaaabb'
#s = 'aaaaabbaaaabb'
#s = 'aabbaaaabbbbbb'
m = s[0]
k = 1
mx = 1
o = m
for i in range(1, len(s)):
if s[i] == m:
k += 1
if k > mx:
mx = k
o = m
else:
k = 1
m = s[i]
print(o)
print(mx)
Автор решения: Manul74
→ Ссылка
def max_substring(s):
max_count = count = 1
max_char = s[0]
for i in range(1, len(s)):
if s[i] == s[i-1]:
count += 1
if count > max_count:
max_count = count
max_char = s[i]
else:
count = 1
return (max_char, max_count)
print(max_substring('aabbbccddddeeefffff'))
print(max_substring('aabbb'))
print(max_substring('aaaaaaaaabbb'))
Ответы
('f', 5) ('b', 3) ('a', 9)