05 August 2008
我们可以直观地解决这个问题,问题的难点在于实现。
算法
对于句子中的每个 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();
}
}