Задача
В строке заменить последний и предпоследний символ, соответственно, на первый и второй. Если длина строки меньше четырех, то вывести, что это сделать невозможно.
Тесты
Input | Output |
aabbcc | ccbbaa |
input data | atput dani |
Kalamabanga | aglamabanaK |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <iostream> #include <string> using namespace std; int main(){ string str; getline(cin,str); int l=str.length(); if(l<4) cout << "False!" << endl; else{ string s1; s1=str[l-1]; s1+=str[l-2]; for(int i=2; i<l-2; i++) s1+=str[i]; s1+=str[1]; s1+=str[0]; cout<< s1 << endl; } return 0; } |
Алгоритм
Поскольку в условии задачи, количество слов не оговорено — для ввода строки используем функцию getline. Затем проверяем ее длину. Если количество символов ( пробел также учитывается как символ!) не меньше 4, то делаем следующее:
1) Кладем в дополнительную строку два последних символа.
2) Заменяем последние символы в исходной строке на первые
3) В первые символы кладем то, что сохранили в дополнительной строке.
Если число символов меньше 4 — выдаем сообщение об ошибке.
Ссылка на ideone.com
Операция += переписывает строку копированием. Первый раз это не накладно — переписывается всего один символ. А потом зачем дважды переписывать строку на новое место?
Зачёл, но с потерей баллов.