Переворот регистра символов в строке

Пройдите по символам, меняя верхний регистр на нижний и наоборот, затем соедините фрагменты. В Unicode смена регистра может менять длину строки, поэтому не заменяйте символы по фиксированным позициям.

Короткий ответ

Что ответить на собеседовании

Пройдите по символам, меняя верхний регистр на нижний и наоборот, затем соедините фрагменты. В Unicode смена регистра может менять длину строки, поэтому не заменяйте символы по фиксированным позициям.

Подробный разбор

Ответ с пояснениями

Условие

Нужно написать функцию, принимающую строку и возвращающую новую строку, где каждый буквенный символ заменён на символ противоположного регистра: маленькие буквы становятся большими, а большие — маленькими. Все остальные символы (цифры, пробелы, пунктуация и т.п.) оставляются без изменений.

Пример

def toggle_case(text: str) -> str:
    # реализация функции
    pass

Требования

  • Функция должна работать за O(n), где n — длина входной строки.
  • Не использовать готовые методы swapcase (или их аналоги) из стандартных библиотек.
  • Сохранять исходный порядок символов.
  • Обрабатывать Unicode‑символы корректно, если язык позволяет.

Ответ

Пройдите по символам, меняя верхний регистр на нижний и наоборот, затем соедините фрагменты. В Unicode смена регистра может менять длину строки, поэтому не заменяйте символы по фиксированным позициям.

def toggle_case(text: str) -> str:
    result = []
    for char in text:
        if char.isupper() or char.istitle():
            result.append(char.lower())
        elif char.islower():
            result.append(char.upper())
        else:
            result.append(char)
    return ''.join(result)

Это посимвольное Unicode-преобразование: например, ß может стать SS. Оно не обязано быть обратимым двумя вызовами и не реализует все языковые контекстные правила. Для фиксированной версии Unicode время O(n), память O(n).

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее