Жауабы: Сортировка букв по частоте
count = [0] * 26
while True:
c = input().strip()
if c == '.':
break
count[ord(c) - ord('a')] += 1
letters = 'abcdefghijklmnopqrstuvwxyz'
order = sorted(letters, key=lambda c: (-count[ord(c) - ord('a')], c))
print(''.join(c for c in order if count[ord(c) - ord('a')] > 0))
У этого задания официального ключа нет, поэтому ответ получен в разборе және кілтпен салыстырылмаған. Нәтижені жаттамас бұрын, өтіңіз выкладки — там видно, откуда взялось каждое число.
На вход программе подаются строчные английские буквы. Ввод этих символов заканчивается точкой (другие символы, отличные от «.» и букв «a»..«z», во входных данных отсутствуют; в программе на языке Бейсик символы можно вводить по одному в строке, пока не будет введена точка). Требуется написать эффективную программу, которая будет печатать буквы, встречающиеся во входной последовательности, в порядке уменьшения частоты их встречаемости. Каждая буква должна быть распечатана один раз. Точка при этом не учитывается.
Если какие-то буквы встречаются одинаковое число раз, то они выводятся в алфавитном порядке. Например, если на вход подаются символы batat., программа должна вывести atb.
Где здесь ошибаются
Сортировка по возрастанию частоты вместо убывания.
Нарушение алфавитного порядка для букв с одинаковой частотой.
Вывод точки или букв, которые не встречались во входной последовательности.
Подсчёт частот с использованием квадратичного перебора вместо массива из 26 счётчиков.
Вывод каждой буквы несколько раз вместо однократного вывода.