Редакция для Перехват задом наперёд


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.

1. Идея

Нужно прочитать строку и вывести её в обратном порядке: последний символ сделать первым, предпоследний — вторым, и так далее.

Задача очень короткая по сути: достаточно просто развернуть строку.

2. Наблюдения

  • В строке могут быть пробелы, поэтому её нужно считывать целиком.
  • Длина строки может быть до 200000, но это не проблема: разворот строки за один проход работает быстро.
  • Никаких дополнительных преобразований делать не нужно — только поменять порядок символов.

Пример:

  • строка ab cd
  • символы в обратном порядке: d, c, `,b,a`
  • ответ: dc ba

3. Алгоритм

  1. Считать всю строку целиком.
  2. Развернуть строку.
  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])

Комментарии

Еще нет ни одного комментария.