LeetCode 824. 山羊拉丁文

目录结构

1.题目

2.题解


1.题目

给定一个由空格分割单词的句子 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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/goat-latin
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2.题解

public class Solution824 {

    @Test
    public void test824() {
        assertEquals("Imaa peaksmaaa oatGmaaaa atinLmaaaaa", toGoatLatin("I speak Goat Latin"));
    }

    public String toGoatLatin(String S) {
        StringBuilder sb = new StringBuilder();
        int index = 1;
        for (String s : S.split(" ")) {
            char c = s.charAt(0);
            if (judge(c)) {
                sb.append(s);
            } else {
                sb.append(s.substring(1)).append(c);
            }
            sb.append("ma");
            sb.append("a".repeat(index));
            sb.append(" ");
            index++;
        }
        return sb.deleteCharAt(sb.length() - 1).toString();
    }

    public boolean judge(char c) {
        switch (Character.toLowerCase(c)) {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                return true;
            default:
                return false;
        }
    }
}
  • 时间复杂度:O(n^2)
  • 空间复杂度:O(n^2)

你可能感兴趣的:(LeetCode,leetcode)