UniLecs #Task. Advanced Reverse string
Задача: дана строка из набора слов, разделенных пробелами. Необходимо выполнить реверс строки.
Входные данные: входная строка представлена массивом символов.
Вывод: массив символов, который содержит требуемый реверс строки.
Примечание:
- Слово определяется как последовательность непробельных символов.
- Входная строка не содержит пробелы в начале и в конце.
- Слова разделяются только одним пробелом.
Условие: для преобразования можно использовать только исходный массив (т.е. O(1) по памяти).
Пример:
[“o”, “n”, “e”, “ “, “t”, “w”, “o”, “ “, “t”, “h”, “r”, “e”, “e”, “ “, “f”, “o”, “u”, “r”, “ “, “f”, “i”, “v”, “e”]
Output:
[“f”, “i”, “v”, “e”, “ “, “f”, “o”, “u”, “r”, “ “, “t”, “h”, “r”, “e”, “e”, “ “, “t”, “w”, “o”, “ “, “o”, “n”, “e”]
Разбор
Выполним задачу следующим способом:
- Сделаем реверс всей строки. Для преобразования воспользуемся двумя указателями. Первый указатель пойдет по строке сначала, другой с конца. Далее будем менять местами элементы, пока указатели не встретятся.
- Теперь сделаем реверс для каждого слова в строке. Зная границы каждого слова мы также воспользуемся методом преобразования с помощью 2х указателей.
Реализация
https://gist.github.com/unilecs/16f505b91d0addcc74e9a6a7018891b2