题目
给你一个由若干单词组成的句子 sentence ,单词间由空格分隔。每个单词仅由大写和小写英文字母组成。
请你将句子转换为 “山羊拉丁文(Goat Latin)”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:
如果单词以元音开头(‘a’, ‘e’, ‘i’, ‘o’, ‘u’),在单词后添加"ma"。
例如,单词 “apple” 变为 “applema” 。
如果单词以辅音字母开头(即,非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"。
例如,单词 “goat” 变为 “oatgma” 。
根据单词在句子中的索引,在单词最后添加与索引相同数量的字母’a’,索引从 1 开始。
例如,在第一个单词后添加 “a” ,在第二个单词后添加 “aa” ,以此类推。
返回将 sentence 转换为山羊拉丁文后的句子。
示例 1:
输入:sentence = “I speak Goat Latin”
输出:“Imaa peaksmaaa oatGmaaaa atinLmaaaaa”
示例 2:
输入:sentence = “The quick brown fox jumped over the lazy dog”
输出:“heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa”
思路
先把字符串分割成单个单词,存在列表里
lists = sentence.split(' ')
再遍历列表,一个一个单词的处理
for i in range(len(lists))
如果首字母是元音字母,单词结尾加‘ma’
if lists[i][0] in 'aeiouAEUIO':
lists[i] += 'ma'
如果首字母是辅音字母,单词第一个字母放到最后,结尾加‘ma’
lists[i] = lists[i][1:] + lists[i][:1] + 'ma'
遍历的同时单词是第几个结尾就加几个‘a’
lists[i] += 'a' * (i + 1)
最后转为字符串
' '.join(lists)
题解
class Solution:
def toGoatLatin(self, sentence: str) -> str:
# 用空格割开字符串,转为单词列表
lists = sentence.split(' ')
# 列表中,每个元素是一个单词,遍历列表
for i in range(len(lists)):
# 如果第i个单词是的首字母是元音字母,结尾加上'ma'
if lists[i][0] in 'aeiouAEUIO':
lists[i] += 'ma'
# 如果第i个单词是的首字母不是元音字母,把第一个字母放到结尾,加上'ma'
else:
lists[i] = lists[i][1:] + lists[i][:1] + 'ma'
# 最后根据单词的索引加上'a'
lists[i] += 'a' * (i + 1)
# 最后转为字符串返回
return ' '.join(lists)