侧边栏壁纸
博主头像
GabrielxD

列車は必ず次の駅へ。では舞台は?私たちは?

  • 累计撰写 471 篇文章
  • 累计创建 108 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

【模拟】山羊拉丁文

GabrielxD
2022-04-28 / 0 评论 / 0 点赞 / 40 阅读 / 484 字 / 正在检测是否收录...
## 题目

824. 山羊拉丁文


给你一个由若干单词组成的句子 sentence ,单词间由空格分隔。每个单词仅由大写和小写英文字母组成。

请你将句子转换为 “山羊拉丁文(Goat Latin)”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:

如果单词以元音开头('a', 'e', 'i', 'o', 'u'),在单词后添加"ma"。 例如,单词 "apple" 变为 "applema" 。 如果单词以辅音字母开头(即,非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"。 例如,单词 "goat" 变为 "oatgma" 。 根据单词在句子中的索引,在单词最后添加与索引相同数量的字母'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 中的所有单词由单个空格分隔

解题

方法一:模拟

思路

根据题意模拟即可。

代码

class Solution {
    private static final Set<Character> VOWELS = new HashSet<>();
    static {
        Collections.addAll(VOWELS, 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U');
    }

    public String toGoatLatin(String sentence) {
        String[] words = sentence.split(" ");
        StringBuilder ans = new StringBuilder();
        for (int i = 0; i < words.length; i++) {
            String curr = words[i];
            if (VOWELS.contains(curr.charAt(0))) {
                ans.append(curr);
            } else {
                ans.append(curr.substring(1));
                ans.append(curr.charAt(0));
            }
            ans.append('m');
            for (int j = -1; j <= i; j++) {
                ans.append('a');
            }
            if (i != words.length - 1) {
                ans.append(' ');
            }
        }

        return ans.toString();
    }
}
0

评论区