Разбор задачи: Преобразование строки в язык Goat Latin

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

 def toGoatLatin(sentence):
    """
    :type sentence: str
    :rtype: str
    """
    vowels = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}
    words = sentence.split()
    result = []
    
    for index, word in enumerate(words, 1):
        if word[0] in vowels:
            goat_word = word + "ma"
        else:
            goat_word = word[1:] + word[0] + "ma"
        goat_word += 'a' * index
        result.append(goat_word)
    
    return ' '.join(result)

Пошаговый разбор кода

  1. Определение гласных букв:

    vowels = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}
    

    Создаётся множество vowels, включающее как строчные, так и заглавные гласные буквы. Это позволяет легко проверить, начинается ли слово с гласной буквы.

  2. Разделение строки на слова:

    words = sentence.split()
    

    С помощью метода split() входная строка разбивается на список слов. Пробелы между словами автоматически игнорируются.

  3. Создание результирующего списка:

    result = []
    

    Пустой список result будет использоваться для сохранения слов после преобразования в "Козий Латинский".

  4. Перебор слов с их индексами:

    for index, word in enumerate(words, 1):
    

    Используется цикл for, где одновременно перебираются слова и их порядковые индексы (начиная с 1). Это упрощает добавление нужного количества букв a.

  5. Преобразование слов:
    • Если слово начинается с гласной:

      if word[0] in vowels:
          goat_word = word + "ma"
      

      В этом случае слово остаётся неизменным, но к нему добавляется строка "ma".

    • Если слово начинается с согласной:

      else:
          goat_word = word[1:] + word[0] + "ma"
      

      Первая буква удаляется и добавляется в конец слова, затем прибавляется строка "ma".

  6. Добавление букв a в конец:

    goat_word += 'a' * index
    

    К преобразованному слову добавляется строка, состоящая из букв a, количество которых равно порядковому номеру слова.

  7. Добавление слова в результат:

    result.append(goat_word)
    

    Готовое преобразованное слово добавляется в список result.

  8. Объединение слов в строку:

    return ' '.join(result)
    

    После завершения цикла список result, содержащий преобразованные слова, объединяется в одну строку с пробелами между словами.


Пример работы функции

Вход:

sentence = "I speak Goat Latin"

Шаги преобразования:

  • Слово "I" начинается с гласной → "I" + "ma" + "a" = "Imaa"
  • Слово "speak" начинается с согласной → "peak" + "s" + "ma" + "aa" = "peaksmaaa"
  • Слово "Goat" начинается с согласной → "oat" + "G" + "ma" + "aaa" = "oatGmaaaa"
  • Слово "Latin" начинается с согласной → "atin" + "L" + "ma" + "aaaa" = "atinLmaaaaa"

Результат:

"Imaa peaksmaaa oatGmaaaa atinLmaaaaa"

 



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