Разбор задачи: Реверсивные буквы

Предложенный нами код решения:

 def reverseString(s):
    """
    :type s: str
    :rtype: str
    """
    # Выбираем только английские буквы из строки
    letters = [ch for ch in s if ch.isalpha()]
    # Создаём новую строку, переворачивая только буквы
    result = []
    for ch in s:
        if ch.isalpha():
            result.append(letters.pop())
        else:
            result.append(ch)
    return ''.join(result)

Рассмотрим решение задачи шаг за шагом:

  1. Извлечение английских букв
    Первая строка кода с использованием спискового включения:

    letters = [ch for ch in s if ch.isalpha()]
    

    Здесь мы создаём список letters, в который добавляем все символы строки s, которые являются английскими буквами. Символы, которые не проходят проверку методом .isalpha(), игнорируются. В итоге, в letters попадают только буквы в их исходном порядке.

    Пример:
    Для строки "a-bC-dEf-ghIj", список letters будет:
    ['a', 'b', 'C', 'd', 'E', 'f', 'g', 'h', 'I', 'j'].

  2. Создание результирующей строки
    Далее, мы создаём пустой список result, который будет содержать символы результирующей строки:

    result = []
    

    После этого мы проходим по каждому символу исходной строки s с помощью цикла:

    for ch in s:
        if ch.isalpha():
            result.append(letters.pop())
        else:
            result.append(ch)
    
    • Если символ ch является буквой (проверяется с помощью .isalpha()), из списка letters извлекается последняя буква методом .pop(), и она добавляется в result. Это позволяет инвертировать порядок букв.
    • Если символ не является буквой, он просто добавляется в result без изменений.

    Пример:
    Для символов строки "a-bC-dEf-ghIj" шаги будут следующими:

    • Символ 'a' → это буква, берём 'j' из letters, добавляем в result.
    • Символ '-' → не буква, добавляем '-' в result.
    • Символ 'b' → это буква, берём 'I' из letters, добавляем в result.

    Итоговый список result:
    ['j', '-', 'I', 'h', 'g', 'f', '-', 'E', 'd', 'C', 'b', 'a'].

  3. Объединение символов в строку
    После завершения обработки всех символов исходной строки, список result преобразуется в строку с помощью метода ''.join():

    return ''.join(result)
    

    Это возвращает строку, в которой все английские буквы перевёрнуты, а неалфавитные символы остались на своих местах.

    Пример:
    Список ['j', '-', 'I', 'h', 'g', 'f', '-', 'E', 'd', 'C', 'b', 'a'] преобразуется в строку "j-Ih-gfE-dCba".

 



Комментарии

xsnm_avatar
xsnm
,
5 месяцев, 19 дней назад

# Напишите определение функции reverseString(s), которая принимает на вход строку s.
# Функция должна вернуть новую строку, в которой:
# Все символы, не являющиеся английскими буквами, остаются на своих местах.
# Все английские буквы (как прописные, так и строчные) располагаются в обратном порядке.
# Пример 1
# Входные данные:
# s = "ab-cdф."
# Выходные данные:
# "dc-baф."    ///////=>    фd-cba.

Ошибка: Для входных данных s = "ab-cdф." факт ///////=>    фd-cba.
 

0

Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии