Составьте и выведите минимальное число из тех цифр,
которые НЕ встречаются во входной строке. Ноль не используется. Если во входных
данных встречаются все цифры от 1 до 9, то следует вывести 0.
Вход. Входная
строка содержит любой текст.
Выход. Выведите
минимальное число из цифр, не встречающихся во входной строке. Если во входных
данных встречаются все цифры от 1 до 9, то следует вывести 0.
Пример входа |
Пример выхода |
1734 is not 384? |
2569 |
строки
Подсчитаем
сколько раз каждая цифра встречается в тексте (сортировка подсчетом). Далее
переберем все символы от ‘1’ до ‘9’ и выведем в возрастающем порядке те, которые не
встречались в тексте. Если все
цифры встречались в тексте, то выводим 0.
Реализация алгоритма
Читаем
входной текст до конца файла посимвольно. Подсчитываем количество раз, которое
каждый символ встречается в тексте.
memset(m,
0, sizeof(m));
while(scanf("%c", &ch) == 1)
m[ch]++;
Перебираем цифры от 1 до 9. В переменной cnt подсчитываем
количество таких цифр, которые не встречались в тексте.
cnt = 0;
for (i = '1'; i <= '9'; i++)
if (m[i] == 0)
{
cnt++;
Выводим цифру, которой нет во входном тексте.
printf("%c", i);
}
Если в тексте встречались все цифры (cnt = 0), то выводим 0.
if (cnt == 0) puts("0");