Это хорошее начало. Вопрос очень сложен. 1006 * Для выполнения этого домашнего задания вам понадобятся два аккумулятора: один идущий спереди назад, который постоянно увеличивается (так что это будет for (int i = 0; i < word.length(); i++)
), и один, который начинается в конце и уменьшается, но не
Идея такова: go продвигаясь вперед, вы проверяете персонажа, которого находите в позиции i
. Затем вы используете if
, так как вопрос просит вас делать разные вещи в зависимости от условия:
- если символ в
i
является специальным символом, просто добавьте его. - else, добавьте последний неспециальный символ в строку, которую мы еще не добавили.
случай if
тривиален. Случай else
- нет. Вот тут-то и пригодится ваш второй аккумулятор: он будет отслеживать, где вы находитесь в строке, с конца. Это al oop -in-l oop. Что вам нужно:
повторить следующий алгоритм:
- Если символ в 'j' (который идет от конца до начала) является специальным символом, уменьшите j, и перезапустите этот алгоритм.
- В противном случае это «последний неспециальный символ, который мы еще не добавили», поэтому добавьте его, уменьшите j и выйдите из этого алгоритма.
Вышеуказанное может be done, например, while или do / while l oop. Он будет внутри вас на l oop.
Удачи!
NB: Это не единственный способ сделать это. Например, вы также можете исключить все специальные символы из ввода, выполнить базовый c реверс для каждого слова внутри, что намного проще, чем то, что у вас есть сейчас, поскольку в наши дни строка имеет метод .reverse()
, а затем , после всего этого, go через ваш исходный входной символ за символом, и для каждого специального символа, который вы найдете, вставьте этот символ в эту позицию в вашей выходной строке. Это тоже работает. Какую стратегию вы предпочитаете!