Leetcode笔记 每日一题 824. 山羊拉丁文 (22.04.21)
Leetcode筆記 每日一題 824. 山羊拉丁文 (22.04.21)
Leetcode筆記 每日一題 824. 山羊拉丁文 (22.04.21)
題目
給你一個由若干單詞組成的句子 sentence ,單詞間由空格分隔。每個單詞僅由大寫和小寫英文字母組成。
請你將句子轉換為 “山羊拉丁文(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" ,以此類推。
返回將 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”
提示:
- 1 <= sentence.length <= 150
- sentence 由英文字母和空格組成
- sentence 不含前導或尾隨空格
- sentence 中的所有單詞由單個空格分隔
解題思路
思路:這題也是針對每個單詞進行操作,所以第一步就先把字符串sentence中的單詞提取出來,跟 Leetcode筆記 每日一題 819. 最常見的單詞 (22.04.17) 方法一樣,用split()函數(shù),將空格作為分割字符,用列表word存儲單詞。
第二步便是按題目要求對單詞進行操作,具體如下:
1.當首字母是元音字母{"a", "e", "i", "o", "u", "A", "E", "I", "O", "U"}時,在單詞后添加"ma"。即word[i] + "ma" ,然后存進res[]
2. 當單詞以輔音字母開頭(即,非元音字母),移除第一個字符并將它放到末尾,之后再添加"ma"。 即word[i][1:j+1] + word[i][0] + "ma",然后存進res[]
3. 然后根據(jù)單詞索引word[i]中"i+1"的數(shù)字大小添加相同數(shù)量的"a",即"a"*cnt
最后恢復成原來的句子形式" ".join(res)
Python代碼
class Solution:def toGoatLatin(self, sentence: str) -> str:vowels = {"a", "e", "i", "o", "u", "A", "E", "I", "O", "U"}res = []word = sentence.split()for i in range(len(word)):cnt = i+1 # 計算索引大小if word[i][0] in vowels: # 判斷首字母是否為元音字母res.append(word[i] + "ma" + "a"*cnt)else:j = len(word[i]) # 獲取單詞的長度res.append(word[i][1:j+1] + word[i][0] + "ma" + "a"*cnt)return " ".join(res)總結
以上是生活随笔為你收集整理的Leetcode笔记 每日一题 824. 山羊拉丁文 (22.04.21)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: alc662声卡注入id_ALC662声
- 下一篇: 「笔耕不辍」zookeeper的节点加密