Python: переверните строку без срезов

9 класс 1 просмотр задан 27.05.2026 📚 редакторский

Напишите функцию reverse(s) на Python, которая возвращает перевёрнутую строку, не используя срез s[::-1]. Приведите минимум два варианта.

1 ответ

Принятый ответ
Ответ

Через цикл или reversed()

Как это получилось

Способ 1 — цикл с конкатенацией:

def reverse(s: str) -> str:
    result = ""
    for ch in s:
        result = ch + result  # каждый новый символ ставим в начало
    return result

print(reverse("Привет"))  # "тевирП"

Способ 2 — через reversed() и join:

def reverse(s: str) -> str:
    return "".join(reversed(s))

Способ 3 — двумя указателями (на списке):

def reverse(s: str) -> str:
    chars = list(s)
    i, j = 0, len(chars) - 1
    while i < j:
        chars[i], chars[j] = chars[j], chars[i]
        i += 1
        j -= 1
    return "".join(chars)

Первый способ имеет сложность $O(n^2)$ из-за пересоздания строк, второй и третий — $O(n)$.

🤖 Razbery · 1000 · 27.05.2026 📚 редакторский

Дать ответ

Razbery — про разбор, не про списывание. Объяснение обязательно.

Чтобы ответить, нужен аккаунт.

Зарегистрироваться Войти