拉丁文"/>
LeetCode 824题 山羊拉丁文
题目描述:
给定一个由空格分割单词的句子 S
。每个单词只包含大写或小写字母。
我们要将句子转换为 “Goat Latin”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。
山羊拉丁文的规则如下:
- 如果单词以元音开头(a, e, i, o, u),在单词后添加
"ma"
。
例如,单词"apple"
变为"applema"
。 - 如果单词以辅音字母开头(即非元音字母),移除第一个字符并将它放到末尾,之后再添加
"ma"
。
例如,单词"goat"
变为"oatgma"
。 - 根据单词在句子中的索引,在单词最后添加与索引相同数量的字母"a",索引从1开始。
例如,在第一个单词后添加"a"
,在第二个单词后添加"aa"
,以此类推。
返回将 S
转换为山羊拉丁文后的句子。
示例 :
输入: "I speak Goat Latin" 输出: "Imaa peaksmaaa oatGmaaaa atinLmaaaaa"
输入: "The quick brown fox jumped over the lazy dog" 输出: "heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"
说明:
S
中仅包含大小写字母和空格。单词间有且仅有一个空格。1 <= S.length <= 150
。
方法分析:
山羊拉丁文的规则,题目上说的其实已经挺清楚了。不过这里在赘述一下:
首先我们需要将句子通过空格分隔为单词,然后对每个单词进行判断。
- 如果该单词首字母是元音字母,即 a, e, i, o, u 中的任意一个,则在该单词末尾添加字符串
"ma"
。 - 如果该单词首字母是辅音字母,则移除首字母并将它放到末尾,之后再添加字符串
"ma"
。 - 根据单词在句子中的索引,在单词最后添加与索引相同数量的字母"a",注意索引从1开始。
代码实现:
var toGoatLatin = function(S) {const vowel = {a:'a',e:'e',i:'i',o:'0',u:'u'};return S.split(" ").map((item,index) => {item = item[0].toLowerCase() in vowel ? item + 'ma' : item.slice(1) + item[0] + 'ma';return item += 'a'.repeat(++index);}).join(" ");
};
代码解析:
算法逻辑已经描述过,此处不再赘述流程。只说几个关键点。在函数内部,定义了元音字母表,以用来后续判断。in操作符用来检测某个键是否存在于对象之中。字符串的slice方法用来在字符串中截取子串。其用法为 slice(start,end),即截取从start到(不包含)end的子串。字符串的repeat函数用来定义str的重复次数,其用法为 str.repeat(count)。
参考链接:/
更多推荐
LeetCode 824题 山羊拉丁文
发布评论