Дана строка. Найти символ в строке, встречающийся наибольшее число раз - C (СИ)
Формулировка задачи:
Дана строка. Найти символ в строке, встречающийся наибольшее число раз. Заранее спасибо!
Решение задачи: «Дана строка. Найти символ в строке, встречающийся наибольшее число раз»
textual
Листинг программы
#include <stdio.h>
char max_symbol(char* str)
{
static int counters[256];
int i;
for( i = 0; i < 256; ++i ) { counters[i] = 0; }
int x;
while( x = (unsigned char) *str++ ) {
counters[x]++;
}
x = 0;
for( i = 1; i < 256; ++i ) {
if( counters[i] > counters[x] ) { x = i; }
}
return x;
}
int main(void)
{
printf("%c\n", max_symbol("abracadabra"));
return 0;
}
Объяснение кода листинга программы
Вывод на экран будет символом, который встречается в строке наибольшее число раз. В данном случае выведется буква a.
В функции max_symbol используется статический массив counters для подсчёта количества каждого символа в строке.
- Инициализировать все значения массива
countersнулями. - Проходить по каждому символу в строке и увеличивать значение в соответствующей ячейке массива
counters. - Найти максимальное значение в массиве
counters. - Вернуть символ, соответствующий максимальному значению.