Задача проста, но иногда возникают проблемы не с алгоритмом, а с его реализацией. Как и написано в условии, строка может быть большой - 10кб = 10240 символов. Так же между словами есть пробелы и это тоже надо учитывать. Я читал каждый символ с помощью getchar()(C++).
Задача очень проста и отлично подходит для новичков. Все, что нужно - на каждом шаге проверять, является ли текущий символ строки буквой или цифрой. Если является буквой, то выводим ее, иначе нам нужно прочитать цифру до конца. Перевести подстроку в число можно не сложными операциями с отнятием символа нуля и умножением на десять. Частая ошибка - невнимательное прочтение условия. Выводить нужно по 40 символов в строке.
В этой задаче нужно понять следующее: преобразование из строки $s$ в строку $t$ могло произойти если каждый символ $c$ заменили на $c'$, отличный от других и строку перемешали.
Очевидно, что после таких операций длина строки останется той же. А так же количество видов различных символов и их количество в строке будет тем же.
Нам осталось только подсчитать, сколько раз, какой символ встречается в строках $s$ и $t$, потом проверить. Сделать это можно отсортировав массив с подсчитаными символами.
7 тест, когда размер файла очень большой, выдает по всем нули
советую использовать BufferedReader(java);
Очень итнерсеная задача! Также пытаются усложнить там где нет никакой трудности.
Задача сводится к считыванию построчно входной файл. Потом разбиение строки на отдельные слова, тем более что все возможные разделители указанны. Для этого в С++ и в Java существуют определенные инструменты.
StringTokenizer в Java, ну хорошо в С++ чуть сложнее но можно ипользовать
функцию strtok.
Все разделители и слова меньше 4 символов выводятся так как есть. Слова длинее 4-х символов трансформируются следующим путем:
В промежутке от третьей и предпоследней буквы находим букву отличную от
второй буквы. Меняем местами и выводим в ответ. Если отличной буквы не найжено выводим как есть.
Между каждой строчкой не забыть вывести переход строки.