本文主要记录一下leetcode之山羊拉丁文网络
给定一个由空格分割单词的句子 S。每一个单词只包含大写或小写字母。 咱们要将句子转换为 “Goat Latin”(一种相似于 猪拉丁文 - Pig Latin 的虚构语言)。 山羊拉丁文的规则以下: 若是单词以元音开头(a, e, i, o, u),在单词后添加"ma"。 例如,单词"apple"变为"applema"。 若是单词以辅音字母开头(即非元音字母),移除第一个字符并将它放到末尾,以后再添加"ma"。 例如,单词"goat"变为"oatgma"。 根据单词在句子中的索引,在单词最后添加与索引相同数量的字母'a',索引从1开始。 例如,在第一个单词后添加"a",在第二个单词后添加"aa",以此类推。 返回将 S 转换为山羊拉丁文后的句子。 示例 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" 说明: S 中仅包含大小写字母和空格。单词间有且仅有一个空格。 1 <= S.length <= 150。 来源:力扣(LeetCode) 连接:https://leetcode-cn.com/problems/goat-latin 著做权归领扣网络全部。商业转载请联系官方受权,非商业转载请注明出处。
class Solution { Set<Character> set = new HashSet<>(){{ add('a'); add('e'); add('i'); add('o'); add('u'); add('A'); add('E'); add('I'); add('O'); add('U'); }}; public String toGoatLatin(String S) { String[] words = S.split(" "); StringBuilder builder = new StringBuilder(); for(int i=0; i<words.length; i++) { if (set.contains(words[i].charAt(0))){ builder.append(words[i] + "ma"); } else { builder.append(words[i].substring(1) + words[i].charAt(0) + "ma"); } for (int j = 0; j < i + 1; j++) { builder.append('a'); } builder.append(' '); } return builder.toString().trim(); } }
这里先将字符串按空格分割为单词,而后遍历每一个单词,判断首字母是否为元音,是的话在后面添加ma,不是的话将首字母移到后面再拼接ma,最后再根据单词在句子中的index拼接指定个数的a。app