Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите букву, которая встречается реже всего между двумя одинаковыми буквами. В ответ укажите букву и сколько раз она встречается в файле. Пример: ZZGMGMMGMZGZ. Ответ для примера: M4.
Способ решения 1:
s = open(’24_M1.txt’).readline()
d = {x: 0 for x in sorted(set(s))}#словарь, в котором в качестве ключа у нас буква,
# а в качестве значения - количество раз, сколько она встречается по определенному условию
for i in range(len(s)-2):
if s[i] == s[i+2]:#если два рядом стоящих символа равны между собой
d[s[i+1]] += 1#то к значению той буквы, что стоит между этой пары добавляем единицу
#выводим букву и количество раз, сколько она встречается в файле
print([(x,s.count(x)) for x in d.keys() if d[x] == min(d.values())])
Способ решения 2:
s = open(’24_M1.txt’).readline()
count = [0]*len(set(s))# создаем массив длиной количества различных букв в файле,
#каждый элемент - это количество раз встреченных определенных букв по заданному условию.
#к примеру,count[0] - количество раз, сколько встретилась буква А,
#count[1] - количество раз, сколько встретилась буква B и так далее.
for i in range(len(s)-2):
if s[i] == s[i+2]:
count[ord(s[i+1]) % 65] += 1 #Функция ord возращает числовое значение буквы,
#остаток от 65 берется поскольку у буквы A в таблице символов значение 65,
#у буквы B - 66 и так далее.
#нужно сделать так, чтобы числовое значение буквы А стало равным 0,
#для B - 1 и так далее, для этого и берем остаток.
letter = chr(count.index(min(count)) + 65)
#Функция chr обратна ord, числовое значение превращает в символ
#определяем букву, которая встречалась минимальное количество раз по заданному условию.
print(letter,s.count(letter))
Ответ: M383921