GuilinDev

Lc0824

05 August 2008

824 Goat Latin

山羊拉丁替换字符,辅音和元音不同替换方式

我们可以直观地解决这个问题,问题的难点在于实现。

算法

对于句子中的每个 word,如果是元音字母,就不变;如果是辅音字母,就旋转这个单词(在 Python 中是 word[1:] + word[:1],在 Java 中是 word.substring(1) + word.substring(0, 1)。

然后,我们加入 “ma” 和期望数量的 “a” 以及一个空格。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
    public String toGoatLatin(String S) {
        Set<Character> vowel = new HashSet();
        for (char c: new char[]{'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'})
            vowel.add(c);

        int t = 1;
        StringBuilder result = new StringBuilder();
        for (String word: S.split(" ")) {
            char first = word.charAt(0);
            if (vowel.contains(first)) {
                result.append(word);
            } else {
                result.append(word.substring(1));
                result.append(word.substring(0, 1));
            }
            result.append("ma");
            result.append("a".repeat(Math.max(0, t)));
            t++;
            result.append(" ");
        }

        result.deleteCharAt(result.length() - 1);
        return result.toString();
    }
}