Редакция для Перехват задом наперёд
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
1. Идея
Нужно прочитать строку и вывести её в обратном порядке: последний символ сделать первым, предпоследний — вторым, и так далее.
Задача очень короткая по сути: достаточно просто развернуть строку.
2. Наблюдения
- В строке могут быть пробелы, поэтому её нужно считывать целиком.
- Длина строки может быть до
200000, но это не проблема: разворот строки за один проход работает быстро. - Никаких дополнительных преобразований делать не нужно — только поменять порядок символов.
Пример:
- строка
ab cd - символы в обратном порядке:
d,c,`,b,a` - ответ:
dc ba
3. Алгоритм
- Считать всю строку целиком.
- Развернуть строку.
- Вывести результат.
4. Почему это работает
Если исходная строка состоит из символов с индексами от 0 до n - 1, то после разворота на позиции 0 должен стоять символ с позиции n - 1, на позиции 1 — символ с позиции n - 2 и так далее.
Именно это и делает операция разворота строки: она переставляет символы в порядке от конца к началу. Значит, полученная строка точно совпадает с тем, что требуется по условию.
5. Сложность
Пусть длина строки равна n.
- Время работы:
O(n) - Дополнительная память:
O(n)
6. Код на C++17
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s);
string rev(s.rbegin(), s.rend());
cout << rev;
return 0;
}
7. Код на Python 3
s = input()
print(s[::-1])
Комментарии