題目
難度:★★☆☆☆
類型:字符串
給定一個由空格分割單詞的句子 S。每個單詞只包含大寫或小寫字母。
我們要將句子轉換為 “Goat Latin”(一種類似于 豬拉丁文 - Pig Latin 的虛構語言)。
山羊拉丁文的規(guī)則如下:
如果單詞以元音開頭(a, e, i, o, u),在單詞后添加"ma"。
例如,單詞"apple"變?yōu)?applema"。
如果單詞以輔音字母開頭(即非元音字母),移除第一個字符并將它放到末尾,之后再添加"ma"。
例如,單詞"goat"變?yōu)?oatgma"。
根據(jù)單詞在句子中的索引,在單詞最后添加與索引相同數(shù)量的字母'a',索引從1開始。
例如,在第一個單詞后添加"a",在第二個單詞后添加"aa",以此類推。
返回將 S 轉換為山羊拉丁文后的句子。
說明
S 中僅包含大小寫字母和空格。單詞間有且僅有一個空格。
1 <= S.length <= 150。
示例
示例 1
輸入: "I speak Goat Latin"
輸出: "Imaa peaksmaaa oatGmaaaa atinLmaaaaa"
示例 2
輸入: "The quick brown fox jumped over the lazy dog"
輸出: "heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"
解答
由于句子中只有空格和字母,將輸入句子使用str.split()拆分成單詞;
對每個單詞單獨處理,根據(jù)首字母是否為元音按照題目要求進行不同的轉換;
將每一個轉換好的單詞用空格連接起來,注意如果句子最后有一個空格應該刪去。
class Solution:
def toGoatLatin(self, S):
vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']
words = S.split()
res = ''
for i, word in enumerate(words):
if word[0] in vowels:
res += word+'ma'+'a'*(i+1) + ' '
else:
res += word[1:]+word[0]+'ma'+'a'*(i+1) + ' '
return res[:-1]
python知識補充:
enumerate迭代器可以不僅可以獲得列表中的元素,同時會獲得元素所在的下標,因為題目中有用下標,所以我們使用enumerate。
將列表中的字符串用空格連接起來,除了使用字符串+空格的形式,更方便的是使用join方法," ".join(word_list)。
上述代碼的緊湊寫法:
class Solution:
def toGoatLatin(self, S):
vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']
return ' '.join([word+'ma'+'a'*(i+1) + ' ' if word[0] in vowels else word[1:]+word[0]+'ma'+'a'*(i+1) + ' ' for i, word in enumerate(S.split())])
如有疑問或建議,歡迎評論區(qū)留言~