24.01 Поиск максимальной подстроки
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
В текстовом файле 6.txt находится цепочка из символов, в которую могут входить строчные буквы латинского алфавита a…z и десятичные цифры. Найдите длину последней самой длинной подцепочки, состоящей из одинаковых символов. Выведите без пробелов и разделителей сначала символ, из которого строится цепочка, а затем – длину этой цепочки.
file = open(’24.txt’) s = file.read() max_size = 1 max_symbol = ’’ temp_size = 1 old = ’’ for i in range(len(s)): if s[i] == old: temp_size += 1 if temp_size >= max_size: max_size = temp_size max_symbol = old else: old = s[i] temp_size = 1 print(max_symbol, max_size, sep=’’)
Ошибка.
Попробуйте повторить позже
Текстовый файл 7.txt состоит не более чем из символов. Определите максимальное количество идущих подряд
символов, среди которых каждые пять подряд идущих символа различны между собой.
file = open(’24.txt’) s = file.read() max_size = 4 temp_size = 4 for i in range(len(s)): if len(set(s[i:i + 5])) == 5: temp_size += 1 max_size = max(max_size, temp_size) else: temp_size = 4 print(max_size)
Ошибка.
Попробуйте повторить позже
В текстовом файле 8.txt находится цепочка из символов, в которую могут входить заглавные буквы латинского алфавита A…Z и десятичные цифры. Найдите длину самой длинной подцепочки, состоящей из одинаковых символов. Найдите все цепочки максимальной длины. В ответе запишите: максимальную длину и все символы, из которых состоят цепочки максимальной длины, в алфавитном порядке. Все в ответе записывайте без пробелов и разделителей. Пример. Максимальная длина 3 и нашлось 3 цепочки такой длины BBB, AAA, CCC. В ответе запишем: 3ABC
import string file = open(’24.txt’) s = file.read() temp_size = 1 string_max_alf = ’’ # Создадим алфавит alf = string.ascii_uppercase count_alf = [0] * 26 old = ’’ for i in range(len(s)): if s[i] == old: temp_size += 1 count_alf[alf.index(s[i])] = max(count_alf[alf.index(s[i])], temp_size) else: old = s[i] temp_size = 1 max_size = max(count_alf) print(max_size, sep=’’, end=’’) for i in range(len(alf)): if count_alf[i] == max_size: print(alf[i], sep=’’, end=’’)
Ошибка.
Попробуйте повторить позже
В текстовом файле 10.txt находится цепочка из символов латинского алфавита A, B, C, D, E, F. Найдите максимальную цепочку вида BECBECB… (конец цепочки может быть неполным) и запишите в ответ длину цепочки.
file = open(’10.txt’) s = file.read() temp_s = ’B’ while temp_s in s: if temp_s[-1] == ’B’: temp_s += ’E’ elif temp_s[-1] == ’E’: temp_s += ’C’ elif temp_s[-1] == ’C’: temp_s += ’B’ print(len(temp_s) - 1)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит из символов I, B, R и Q. Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет идущих подряд символов R.
s = open(’24.txt’).readline() c = mx = 1 for i in range(len(s) - 1): if s[i] + s[i + 1] != ’RR’: c += 1 if c > mx: mx = c else: c = 1 print(mx)
Ошибка.
Попробуйте повторить позже
Текстовый файл 1.txt содержит строку из заглавных латинских букв A,B и С, всего не более чем из символов.
Определите максимальное количество идущих подряд троек символов BBC или AAC.
f = open(’24.txt’) s = f.readline() #Заменяем BBC и AAC на * s = s.replace(’BBC’,’*’).replace(’AAC’,’*’) #Запускаем цикл,который проверяет есть ли в строке i подряд идущих троек for i in range(len(s)): if ’*’*i in s: print(i)
Другое решение
file = open(’24.txt’) s = file.read() max_counter = 0 temp_counter = 0 for start_step in range(3): for index in range(start_step, len(s) - len(s) % 3 - 2, 3): if s[index:index + 3] == "BBC" or s[index:index + 3] == "AAC": temp_counter += 1 max_counter = max(max_counter, temp_counter) else: temp_counter = 0 print(max_counter)
Ошибка.
Попробуйте повторить позже
Текстовый файл 2.txt содержит только заглавные буквы латинского алфавита (ABC...Z). Определите максимальное количество идущих подряд символов, среди которых нет сочетания символов EF.
f = open(’2.txt’) s = f.readline() s = s.replace(’EF’,’E F’) a = max(list(map(len,s.split()))) print(a)
Второй способ решения
file = open(’24.txt’) s = file.read() max_substring = 1 temp_substring = s[0] for i in range(1, len(s) - 1): temp_substring += s[i] if temp_substring[len(temp_substring) - 2:] == "EF": temp_substring = s[i] max_substring = max(max_substring, len(temp_substring)) print(max_substring)
Ошибка.
Попробуйте повторить позже
Текстовый файл 3.txt содержит только символы A, B, C, D, E. Определите максимальное количество идущих подряд пар символов вида согласная + гласная.
f = open(’3.txt’) s = f.readline() a = ’BCD’ b = ’AE’ #Циклы проходятся по всем вариантам сочетания согл+гласная for i in a: for j in b: t = i+j#записывается пара символов s = s.replace(t,’**’)#все найденные сочетания такого вида заменяются на ** s1 = ’*’ while s1 in s: #добавляем к s1 ’*’ пока такая подстрока есть в строке s1 += ’*’ print((len(s1)-1)//2) #поскольку мы считаем количество пар,а не символов,мы должны поделить длину s1 на 2 чтобы получить окончательный ответ
Второй способ решения
file = open(’24.txt’) s = file.read() max_count = 0 temp_count = 0 for start in range(2): temp_count = 0 for index in range(start, len(s) - 1, 2): if s[index] in "BCD" and s[index + 1] in "AE": temp_count += 1 max_count = max(max_count, temp_count) else: temp_count = 0 print(max_count)
Ошибка.
Попробуйте повторить позже
В текстовом файле 4.txt находится цепочка из символов, в которую могут входить строчные буквы латинского алфавита a…z и десятичные цифры. Определите максимальное количество идущих подряд троек символов вида «цифра+буква+цифра».
f = open(’4.txt’) s = f.readline() a1 = ’abcdefghijklmnoqrstuvwxyz’ a2 = ’0123456789’ for i in a2: for j in a1: for k in a2: t = i+j+k s = s.replace(t,’*’) t = ’’ while t in s: t += ’*’ print(len(t)-1)
Второй способ решения
file = open(’24.txt’) s = file.read() numbers = ’0123456789’ max_count = 0 temp_count = 0 for start in range(3): for index in range(start, len(s) - 2, 3): if s[index] in numbers and s[index + 1] not in numbers and s[index + 2] in numbers: temp_count += 1 max_count = max(max_count, temp_count) else: temp_count = 0 print(max_count)
Ошибка.
Попробуйте повторить позже
В текстовом файле 5.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Необходимо найти длину самой длинной подцепочки символов, в которой нет буквы С.
f = open(’5.txt’) s = f.readline() s = s.replace(’C’,’ ’) a = max(map(len,s.split())) print(a)
Второй способ решения
file = open(’24.txt’) s = file.read() max_substring = 0 temp_substring = 0 for i in range(len(s)): if s[i] != ’C’: temp_substring += 1 max_substring = max(max_substring, temp_substring) else: temp_substring = 0 print(max_substring)
Ошибка.
Попробуйте повторить позже
Текстовый файл 7.txt содержит только заглавные буквы латинского алфавита (ABC...Z). Определите максимальное количество идущих подряд символов, среди которых нет пар символов и AG и TN одновременно.
f = open(’24_5.txt’) s = f.readline() a = max(map(len,s.replace(’AG’,’A G’).split())) #без пары AG b = max(map(len,s.replace(’TN’,’T N’).split())) #без пары TN print(max(a,b))
Второй способ решения
s = open(’24_5.txt’).readline() c = mx = 1 count_AG = 0 count_TN = 0 for i in range(len(s)-1): if s[i] + s[i+1] != ’AG’ and s[i] + s[i+1] != ’TN’: c += 1 mx = max(mx,c) if s[i] + s[i+1] == ’AG’: if count_TN == 0: c += 1 count_AG += 1 mx = max(mx,c) else: mx = max(mx,c) c = 1 count_AG = 0 count_TN = 1 if s[i] + s[i + 1] == ’TN’: if count_AG == 0: c += 1 count_TN += 1 mx = max(mx, c) else: mx = max(mx, c) c = 1 count_AG = 1 count_TN = 0 print(mx)
Ошибка.
Попробуйте повторить позже
В текстовом файле 8.txt находится цепочка из символов латинского алфавита L, D, R. Найдите максимальную длину строки, состоящей только из комбинаций LRD и DRL.
Искомая подстрока может включать только комбинацию LRD, только комбинацию DRL или содержать одновременно как комбинацию LRD, так и комбинацию DRL. Комбинации не могут пересекаться.
f = open(’8.txt’) s = f.readline() s = s.replace(’LRDRL’,’LRD DRL’).replace(’DRLRD’,’DRL LRD’) s = s.replace(’LRD’,’***’).replace(’DRL’,’***’) for i in range(len(s)): if ’*’*i in s: print(i)
Второй способ решения
file = open(’24.txt’) s = file.read() max_size = 0 for start in range(3): temp_count = 0 for i in range(start, len(s) - 2, 3): if s[i:i + 3] == "LRD" or s[i:i + 3] == "DRL": temp_count += 1 max_size = max(max_size, temp_count * 3) else: temp_count = 0 print(max_size)
Ошибка.
Попробуйте повторить позже
В текстовом файле 9.txt находится цепочка из символов латинского алфавита X, Y, Z. Найдите длину самой длинной подцепочки, состоящей из символов Y.
f = open(’9.txt’) s = f.readline() s = s.replace(’X’,’ ’).replace(’Z’,’ ’) a = max(list(map(len,s.split()))) print(a)
Второй способ решения
file = open(’24.txt’) s = file.read() max_size = 0 temp_size = 0 for i in range(len(s)): if s[i] == ’Y’: temp_size += 1 max_size = max(max_size, temp_size) else: temp_size = 0 print(max_size)
Ошибка.
Попробуйте повторить позже
В текстовом файле 10.txt находится цепочка из символов латинского алфавита A, B, C, D, E, F. Определите максимальное количество идущих подряд символов, среди которых нет подстроки СDEF.
f = open(’10.txt’) s = f.readline() s = s.replace(’CDEF’,’CDE DEF’) a = max(list(map(len,s.split()))) print(a)
Второй способ решения
file = open(’24.txt’) s = file.read() max_size = 0 temp_string = ’’ for i in range(len(s)): temp_string += s[i] if temp_string[len(temp_string) - 4:] == "CDEF": max_size = max(max_size, len(temp_string) - 1) temp_string = "DEF" print(max_size)
Ошибка.
Попробуйте повторить позже
Текстовый файл 24.txt состоит из символов X, Y и Z. Определите максимальную длину подпоследовательности подряд идущих символов, состоящих из четверок вида гласная + согласная + согласная + гласная
Например, для строки XYXXYYZZYZYXXYZ искомая подпоследовательность YXXYYZZY и её длина равна 8.
file = open(’24.txt’) s = file.read() gl = ’Y’ sogl = "XZ" temp_count = 0 max_count = 0 for start in range(4): for i in range(start, len(s) - 3, 4): if (s[i] in gl) and (s[i + 1] in sogl) and (s[i + 2] in sogl) and (s[i + 3] in gl): temp_count += 1 max_count = max(max_count, temp_count) else: temp_count = 0 print(max_count * 4)
Ошибка.
Попробуйте повторить позже
Текстовый файл 24.1.txt состоит из символов A, C, D, F и O. Определите максимальное количество идущих подряд пар символов вида гласная + согласная
Для выполнения этого задания следует написать программу.
file = open(’24.1.txt’) s = file.read() max_count = 0 for start in range(2): temp_count = 0 for i in range(start, len(s) - 1, 2): if s[i] in "AO" and s[i + 1] in "CDF": temp_count += 1 max_count = max(max_count, temp_count) else: temp_count = 0 print(max_count)
Ошибка.
Попробуйте повторить позже
Текстовый файл 24.2.txt состоит не более чем из символов арабских цифр
. Определите максимальное
количество идущих подряд четверок символов вида: нечетная цифра + четная цифра + нечетная цифра +
четная цифра в прилагаемом файле.
Для выполнения этого задания следует написать программу.
Примечание: цифра 0 является чётной.
file = open(’24.2.txt’) s = file.read() even = "02468" odd = "13579" max_count = 0 for start in range(4): temp_count = 0 for i in range(start, len(s) - 3, 4): if s[i] in odd and s[i + 1] in even and s[i + 2] in odd and s[i + 3] in even: temp_count += 1 max_count = max(max_count, temp_count) else: temp_count = 0 print(max_count)
Ошибка.
Попробуйте повторить позже
Текстовый файл 24.4.txt состоит из символов латинского алфавита. Найдите подстроку наибольшей длины, состоящую из двух различных символов, которые чередуются. В качестве ответа укажите её длину.
Для выполнения этого задания следует написать программу.
file = open(’24.4.txt’) s = file.read() temp_count = 2 max_count = 2 last_symbol = ’’ do_last_symbol = ’’ for i in range(len(s)): if s[i] == do_last_symbol: if do_last_symbol != last_symbol: temp_count += 1 max_count = max(max_count, temp_count) else: temp_count = 2 do_last_symbol = last_symbol last_symbol = s[i] print(max_count)
Ошибка.
Попробуйте повторить позже
Текстовый файл состоит не более чем из символов L, D и R. Определите максимальную длину цепочки вида
LDRLDRLDR... (составленной из фрагментов LDR, последний фрагмент может быть неполным). В ответе запишите
только число.
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
s = open(’24.txt’).readline() ans = ’’ while ans in s: #Пока наша подстрока есть в файле, мы её наращиваем ans += ’LDR’ while ans not in s:#Убираем по символу из подстроки, пока она вновь не будет подстрокой файла ans = ans[:-1] print(len(ans))
Ошибка.
Попробуйте повторить позже
Текстовый файл 1-3.txt состоит не более чем из заглавных латинских букв (A..Z). Текст разбит на
строки различной длины. Определите количество строк, в которых буква K встречается реже, чем буква
O.
f = open(’D:/1-3.txt’) a = f.readlines() c = 0 for s in a: if s.count(’K’) < s.count(’O’): c += 1 print(c)