Разворот строки
Условие
Напишите метод, который принимает строку в качестве аргумента и возвращает её в обратном порядке.
Пример
Вход: "hello" Выход: "olleh"
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Решение: Разворот строки
Описание задачи
Требуется реализовать метод, который преобразует исходную строку, переставляя все символы в обратном порядке. Эта операция часто используется в алгоритмических задачах, валидации палиндромов и обработке текстовых данных. Операция разворота строки (string reversal) является базовой при работе со строками и может быть реализована несколькими способами.
Решение на Python
def reverse_string(s):
"""
Разворачивает строку в обратном порядке.
Args:
s: исходная строка
Returns:
строка в обратном порядке
"""
return s[::-1]
Альтернативные подходы
1. Использование функции reversed()
def reverse_string(s):
return ''.join(reversed(s))
2. Итеративный подход с циклом
def reverse_string(s):
result = ''
for char in s:
result = char + result
return result
3. Рекурсивный подход
def reverse_string(s):
if len(s) <= 1:
return s
return reverse_string(s[1:]) + s[0]
Тестовые примеры
import unittest
class TestReverseString(unittest.TestCase):
def test_basic_reverse(self):
assert reverse_string('hello') == 'olleh'
def test_empty_string(self):
assert reverse_string('') == ''
def test_single_character(self):
assert reverse_string('a') == 'a'
def test_palindrome(self):
assert reverse_string('racecar') == 'racecar'
def test_with_spaces(self):
assert reverse_string('hello world') == 'dlrow olleh'
def test_with_numbers(self):
assert reverse_string('abc123') == '321cba'
def test_with_special_chars(self):
assert reverse_string('hello!@#') == '#@!olleh'
Анализ производительности
| Подход | Временная сложность | Пространственная сложность |
|---|---|---|
| Слайсинг [::-1] | O(n) | O(n) |
| reversed() + join() | O(n) | O(n) |
| Цикл с конкатенацией | O(n²) | O(n) |
| Рекурсия | O(n) | O(n) |
Применение в QA Automation
В контексте тестирования эта функция может быть полезна для:
- Валидации палиндромов — проверка, что строка одинакова в обе стороны
- Тестирования обработки текста — проверка корректности работы алгоритмов с реверсом
- Сравнения данных — проверка симметричных операций
- Генерации тестовых данных — создание зеркальных версий строк для edge cases
Рекомендация
Для практического использования в Python рекомендуется слайсинг [::-1], так как это самый быстрый, читаемый и компактный способ. Слайсинг оптимизирован интерпретатором CPython и является идиоматичным решением на Python.