824. 山羊拉丁文(Python)

題目

難度:★★☆☆☆
類型:字符串

給定一個由空格分割單詞的句子 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"

解答

  1. 由于句子中只有空格和字母,將輸入句子使用str.split()拆分成單詞;

  2. 對每個單詞單獨處理,根據(jù)首字母是否為元音按照題目要求進行不同的轉換;

  3. 將每一個轉換好的單詞用空格連接起來,注意如果句子最后有一個空格應該刪去。

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ū)留言~

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容