824. Goat Latin
Description
You are given a string sentence
that consist of words separated by spaces. Each word consists of lowercase and uppercase letters only.
We would like to convert the sentence to “Goat Latin” (a made-up language similar to Pig Latin.) The rules of Goat Latin are as follows:
- If a word begins with a vowel (
'a'
,'e'
,'i'
,'o'
, or'u'
), append"ma"
to the end of the word.- For example, the word
"apple"
becomes"applema"
.
- For example, the word
- If a word begins with a consonant (i.e., not a vowel), remove the first letter and append it to the end, then add
"ma"
.- For example, the word
"goat"
becomes"oatgma"
.
- For example, the word
- Add one letter
'a'
to the end of each word per its word index in the sentence, starting with1
.- For example, the first word gets
"a"
added to the end, the second word gets"aa"
added to the end, and so on.
- For example, the first word gets
Return the final sentence representing the conversion from sentence to Goat Latin.
Example 1:
- Input: sentence = “I speak Goat Latin”
- Output: “Imaa peaksmaaa oatGmaaaa atinLmaaaaa”
Example 2:
- Input: sentence = “The quick brown fox jumped over the lazy dog”
- Output: “heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa”
Constraints:
- 1 <= sentence.length <= 150
sentence
consists of English letters and spaces.sentence
has no leading or trailing spaces.- All the words in
sentence
are separated by a single space.
Submitted Code
class Solution(object):
def toGoatLatin(self, sentence):
"""
:type sentence: str
:rtype: str
"""
vowels = set('aeiouAEIOU')
letter_a = 'a'
result = []
words = sentence.split()
for w in words:
new_word = ''
if w[0] in vowels:
new_word = w + 'ma'
else:
new_word = w[1:] + w[0] + 'ma'
new_word += letter_a
result.append(new_word)
letter_a += 'a'
return ' '.join(result)
Runtime: 0 ms | Beats 100.00%
Memory: 12.26 MB | Beats 99.22%
모음 소문자와 대문자를 set 타입에 넣어서 시간을 절약했다.
Other Solutions
1st
class Solution(object):
def toGoatLatin(self, sentence):
vowels = set('aeiouAEIOU')
ans = []
for i, w in enumerate(sentence.split(), 1):
if w[0] in vowels:
nw = w + 'ma'
else:
nw = w[1:] + w[0] + 'ma'
ans.append(nw + 'a' * i)
return ' '.join(ans)
time complexity: 𝑂(𝑛)
space complexity: 𝑂(𝑛)
enumerate() 함수의 두 번째 매개변수로 숫자 1
을 넣어서 1부터 세도록 만들 수 있다.