24.01 Поиск максимальной подстроки
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Текстовый файл 1-3.txt состоит не более чем из заглавных латинских букв (A..Z). Текст разбит на строки
различной длины. Определите количество строк, в которых комбинация BU встречается больше трех
раз.
f = open(’D:/1-3.txt’) a = f.readlines() c = 0 for s in a: if s.count(’BU’) > 3: c += 1 print(c)
Ошибка.
Попробуйте повторить позже
Текстовый файл 1-3.txt состоит не более чем из заглавных латинских букв (A..Z). Текст разбит на строки
различной длины. Определите количество строк, в которых встречается комбинация G**T, где звёздочка обозначает
любой символ.
f = open(’D:/1-3.txt’) a = f.readlines() c = 0 for s in a: for i in range(len(s)-3): if s[i] == ’G’ and s[i+3] == ’T’: c += 1 # строка уже подходит, пропускаем её break print(c)
Ошибка.
Попробуйте повторить позже
Текстовый файл 4.txt состоит не более чем из заглавных латинских букв (A..Z). Файл разбит на строки различной
длины. В строках, содержащих более 50 букв N, нужно определить и вывести максимальное расстояние между
одинаковыми буквами в одной строке.
f = open(’D:/4.txt’) a = f.readlines() abc = ’ABCDEFGHIJKLMNOPQRSTUVWXYZ’ c = 0 mx = 0 for s in a: if s.count(’N’) > 50: for i in abc: r = s.rfind(i) - s.find(i) mx = max(mx, r) print(mx)
Ошибка.
Попробуйте повторить позже
Текстовый файл 5.txt состоит не более чем из заглавных латинских букв (A..Z). Файл разбит на строки различной
длины.Необходимо найти строку, содержащую самую длинную цепочку стоящих подряд одинаковых букв. Если таких
строк несколько, надо взять ту, которая в файле встретилась позже. Определите, какая буква встречается в этой
строке реже всего, но присутствует. Если таких букв несколько, надо взять ту, которая стоит последней в алфавите.
Запишите в ответе эту букву, а затем без пробелов и разделителей – сколько раз она во всем файле стоит после буквы
A.
f = open(’D:/5.txt’) a = f.readlines() # Алфавит, с помощью него будем вести перебор abc = ’ABCDEFGHIJKLMNOPQRSTUVWXYZ’ # Сколько раз буква, встречающаяся реже всех, стоит после A c = 0 # Длина самой длинной цепочки стоящих подряд одинаковых букв mx = 0 # Строка, содержащая данную цепочку mxs = ’’ # Поиск нужной строки путём перебора подстрок разных длин из одинаковых букв for s in a: for l in abc: ts = l while ts in s: # Ставим ">=", чтобы в случае, # где максимальная длина уже встретилась, # мы учли позднюю строку if len(ts) >= mx: mx = len(ts) mxs = s ts += l # Сколько раз встречается самая редкая буква mn = 10**10 # Самая редкая буква mnl = ’’ # Поиск самой редкой буквы for l in abc: if mxs.count(l) <= mn: mn = mxs.count(l) mnl = l # Сколько раз встречается после A во всём файле самая редкая буква for s in a: c += s.count(’A’+mnl) print(mnl, c)
Ошибка.
Попробуйте повторить позже
Текстовый файл 6.txt состоит не более чем из заглавных латинских букв (A..Z). Файл разбит на строки различной
длины.Необходимо найти строку, содержащую наибольшее количество букв O (если таких строк несколько, надо взять
ту, которая в файле встретилась раньше). Определите, какая буква, стоящая после согласной, встречается в этой
строке чаще всего после буквы O (то есть букву O не учитывать). Если таких букв несколько, надо взять ту, которая
стоит раньше в алфавите. Запишите в ответе эту букву, а затем без пробелов и разделителей – сколько раз она
встречается во всем файле.
f = open(’C:/24_6.txt’) a = f.readlines() # Ищем строку с наибольшим кол-вом O mx = ’’ for s in a: if s.count(’O’) > mx.count(’O’): mx = s # Перебираем пары вида "согласная+буква", # тем самым находим букву, которая находится чаще после согласной sg = ’BCDFGHJKLMNPQRSTVWXZ’ # Букву O не рассматриваем по условию abc = ’ABCDEFGHIJKLMNPQRSTUVWXYZ’ mxl = ’’ # Искомая буква mxc = 0 # Переменная, с помощью которой отслеживаем макс. частоту for l1 in abc: c = 0 for l2 in sg: c += mx.count(l2+l1) if c > mxc: mxc = c mxl = l1 # Во втором выражении мы соединили массив a в одну строку с помощью функции join(), # чтобы легко найти количество появлений нужной буквы print(mxl, (’’.join(a)).count(mxl))
Ошибка.
Попробуйте повторить позже
В текстовом файле 7.txt находится цепочка из символов латинского алфавита A, B, C, D, E, F. Найдите максимальную цепочку вида FDEFDE… (конец цепочки может быть неполным) и запишите в ответ длину цепочки.
f = open(’C:/24_7.txt’) a = f.readline() s = ’’ # Смотрим, сколько полных подстрок FDE может быть while s+’FDE’ in a: s += ’FDE’ # Добираем буквы для неполного конца цепочки if s+’F’ in a: s += ’F’ if s+’D’ in a: s += ’D’ print(len(s))
Ошибка.
Попробуйте повторить позже
В текстовом файле 8.txt. находится цепочка из символов латинского алфавита A, B, C, D, E. Найдите длину самой длинной подцепочки, не содержащей сочетания BE.
s = open(’8.txt’).readline().replace(’BE’,’B E’).split(’ ’) mx = 0 for i in s: if len(i) > mx: mx = len(i) print(mx)
Ошибка.
Попробуйте повторить позже
В текстовом файле 9.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Найдите третье вхождение подцепочки ”BCCDA” и запишите в ответе букву, которая стоит после этой подцепочки.
f = open(’C:/24_9.txt’) a = f.readline() # Воспроизводим три замены данных подцепочек, # чтобы успешно найти третье вхождение с помощью rfind() (поиск элемента с конца строки) a = a.replace(’BCCDA’, ’*****’, 3) # Мы ищем символ после третьего вхождения, значит, берём индекс после подстроки print(a[a.rfind(’*’)+1])
Ошибка.
Попробуйте повторить позже
Текстовый файл 10.txt состоит не более чем из символов. Определите максимальное количество идущих подряд
символов, среди которых каждые пять подряд идущих символов различны между собой.
f = open(’C:/24_10.txt’) s = f.readline() maxi = 0 # По умолчанию будут подходить 4 символа, # чтобы при выполнении первой проверки количество стало равно 5 k = 4 for i in range(0, len(s) - 4): x = s[i:i + 5] # Срез 5 подряд идущих символов if len(set(x)) == 5: # Если количество уникальных символов равно 5 k += 1 # Добавляем к количеству новый крайний символ maxi = max(maxi, k) else: k = 4 # Сбрасываем счётчик до значения по умолчанию print(maxi)
Ошибка.
Попробуйте повторить позже
Текстовый файл содержит строку из заглавных латинских букв A, B, С, D, E и V, всего не более чем из символов.
Определите максимальное количество идущих подряд троек символов BDE или ACC (оба вида могут идти в
произвольном порядке).
# Решение через замены и сплит s = open("24.txt").readline() # Заменим сначала нужные нам комбинации на * s = s.replace("BDE", "***").replace("ACC", "***").replace("A", "1").replace("B", "1").replace("C", "1") \ .replace("D", "1").replace("E", "1").replace("V", "1").split("1") # Затем оставшиеся буквы заменим на 1 и сделаем сплит по 1, чтобы ненужные буквы нам не мешались # Делим на 3 значение потому что нам нужно узнать количество подряд идущих троек, а не символов print(max(len(x) for x in s) // 3) #Решение через циклы s = open("24.txt").readline() count = mx = 0 # Данный цикл нужен, потому что возможна ситуация, когда цепочка нужных нам комбинаций пройдёт мимо нас # Во избежании этого мы пишем данный цикл for k in range(3): #Делаем шаг на 3 элемента,так как мы должны отслеживать тройки символов, # Если шаг поставить другой,то ответ будет некорректным for i in range(k, len(s)-2,3): if (s[i] + s[i+1] + s[i+2]) == "ACC" or (s[i] + s[i+1] + s[i+2]) == "BDE": count += 1 if count > mx: mx = count else: count = 0 print(mx)
Ошибка.
Попробуйте повторить позже
В текстовом файле 2.txt находится цепочка из символов латинского алфавита A, C, D, F, O. Найдите длину самой длинной подцепочки, состоящей из символов F.
f = open("2.txt") a = f.readline() s = "" while s in a: s += "F" # -1, потому что при последнем действии в цикле прибавляется лишняя F, # подстроку с которой программа в строке не видит print(len(s) - 1)
Ошибка.
Попробуйте повторить позже
В текстовом файле 3.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Найдите максимальную цепочку вида EABEABEAB… (конец цепочки может быть неполным) и запишите в ответ длину цепочки.
file = open(’3.txt’) s = file.read() temp_s = ’E’ while temp_s in s: if temp_s[-1] == ’E’: temp_s += ’A’ elif temp_s[-1] == ’A’: temp_s += ’B’ elif temp_s[-1] == ’B’: temp_s += ’E’ print(len(temp_s) - 1)
Ошибка.
Попробуйте повторить позже
Текстовый файл 4.txt состоит не более чем из символов. Определите максимальное количество идущих подряд
символов, среди которых каждые три подряд идущих символа различны между собой.
f = open("4.txt") a = f.readline() l = 2 mx = 2 for i in range(len(a)-2): if a[i] != a[i+1] and a[i] != a[i+2] and a[i+1] != a[i+2]: l += 1 mx = max(mx, l) # Выставляем 2, потому что у нас сдвиг на 1 символ, # первый и второй символ мы уже ранее рассматривали else: l = 2 print(mx)
Ошибка.
Попробуйте повторить позже
В текстовом файле 5.txt находится цепочка из символов, в которую могут входить заглавные буквы латинского алфавита A…Z. Найдите длину самой длинной подцепочки, состоящей из одинаковых символов. Найдите все цепочки максимальной длины. В ответе запишите: максимальную длину и все символы, из которых состоят цепочки максимальной длины, в алфавитном порядке. Все в ответе записывайте без пробелов. Пример. Максимальная длина 3 и нашлось 3 цепочки такой длины BBB, AAA, CCC. В ответе запишем: 3ABC
f = open("D:/5.txt") a = f.readline() abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" l = 1 mx = 1 for i in range(len(a)-1): if a[i] == a[i+1]: l += 1 mx = max(mx, l) else: l = 1 print(mx) for i in abc: if i*mx in a: print(i)
Ошибка.
Попробуйте повторить позже
В текстовом файле 6.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Найдите длину самой длинной подцепочки, состоящей из символов B,C или E (в произвольном порядке).
f = open("D:/6.txt") a = f.readline() ls = "BCE" l = 0 mx = 0 for i in range(len(a)): if a[i] in ls: l += 1 mx = max(mx, l) else: l = 0 print(mx)
Ошибка.
Попробуйте повторить позже
В текстовом файле 7.txt находится цепочка из символов латинского алфавита A, B, C, D, E, F. Найдите длину самой длинной подцепочки, не содержащей символа C.
f = open("C:/247.txt") s = f.readline() # l — текущая длина, ml — максимальная l = 0 ml = 0 for i in range(len(s)): # пока текущий символ не C, прибавляем 1 к длине текущей подстроки if s[i] != "C": l += 1 # применяем данную функцию для выявления макс. строки ml = max(l, ml) else: l = 0 print(ml)
Ошибка.
Попробуйте повторить позже
В текстовом файле 8.txt находится цепочка из символов, в которую могут входить строчные буквы латинского алфавита a…z и десятичные цифры. Найдите длину самой длинной подцепочки, состоящей из одинаковых символов, если таких цепочек несколько, то возьмите ту, что встретилась раньше. Выведите через пробел сначала символ, из которого строится цепочка, а затем – длину этой цепочки.
f = open("C:/248.txt") s = f.readline() # l — текущая длина, ml — максимальная # ms — символ, из которого строится макс. цепочка l = 1 ml = 1 ms = "" for i in range(len(s)-1): # Сверяем текущий и последующий символы if s[i] == s[i+1]: l += 1 # Если макс. длина обновляется, то сохраняем символ if l > ml: ms = s[i] ml = max(l, ml) # При несоответствии символов сбрасываем счётчик else: l = 1 print(ms, ml)
Ошибка.
Попробуйте повторить позже
В текстовом файле 1.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Найдите длину самой длинной подцепочки, состоящей из символов A, B или E (в произвольном порядке).
f = open("C:/24/1.txt") s = f.readline() l = 0 mxl = 0 for i in range(len(s)): if s[i] == "A" or s[i] == "B" or s[i] == "E": l += 1 mxl = max(l, mxl) else: l = 0 print(mxl)
Ошибка.
Попробуйте повторить позже
В текстовом файле 2.txt находится цепочка из символов, в которую могут входить строчные буквы латинского алфавита a…z и десятичные цифры. Найдите длину самой длинной подцепочки, состоящей из символов одной группы (буквы или цифры).
f = open("C:/24/2.txt") s = f.readline() l = 0 mxl = 0 d = "0123456789" isDigit = False # True — цифра, False — буква for i in range(len(s)): if (s[i] in d) == isDigit: l += 1 mxl = max(l, mxl) else: l = 1 if s[i] in d: isDigit = True else: isDigit = False print(mxl)
Ошибка.
Попробуйте повторить позже
В текстовом файле 4.txt находится цепочка из символов латинского алфавита A, B, C, D, E. Найдите длину самой длинной подцепочки, состоящей из символов A.
f = open("C:/24/4.txt") s = f.readline() a = "A" while a in s: a += "A" print(len(a)-1)