关于leetcode:leetcode之山羊拉丁文

本文次要记录一下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。

doc

  • 山羊拉丁文

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理