← Назад к вопросам

Разворот строки

2.0 Middle🔥 121 комментариев
#Теория тестирования

Условие

Напишите метод, который принимает строку в качестве аргумента и возвращает её в обратном порядке.

Пример

Вход: "hello" Выход: "olleh"

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Решение: Разворот строки

Описание задачи

Требуется реализовать метод, который преобразует исходную строку, переставляя все символы в обратном порядке. Эта операция часто используется в алгоритмических задачах, валидации палиндромов и обработке текстовых данных. Операция разворота строки (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.

Разворот строки | PrepBro