824. 山羊拉丁文『简单』
题目来源于力扣(LeetCode)
一、题目
题目相关标签:字符串
说明:
S
中仅包含大小写字母和空格。单词间有且仅有一个空格。1 <= S.length <= 150
。
二、解题思路
-
对字符串 S 进行空格的分组,得到单词数组
-
遍历单词数组,对每一个单词都判断单词的首字母是否为元音字母(不区分大小写)
三、代码实现
public static String toGoatLatin(String S) {
StringBuilder ans = new StringBuilder();
// a 的个数初始为 1
StringBuilder acount = new StringBuilder("a");
String maStr = "ma";
String[] strs = S.split(" ");
for (int i = 0; i < strs.length; i++) {
String str = strs[i];
char c = str.charAt(0);
// 对单词中的首位字符进行判断
if (isvowel(c)) {
ans.append(str);
} else {
// 非元音字母时,字符串的首位挪到末位后
ans.append(str.substring(1));
ans.append(c);
}
// 为字符串添加字符串 ma 和字符串索引 + 1 个长度的字符 a
ans.append(maStr);
ans.append(acount);
// 当前字符串不是数组的最后一位时,才加空格分隔符
if (i < strs.length - 1) {
ans.append(" ");
}
// a 的个数每次加 1
acount.append("a");
}
return ans.toString();
}
// 判断某字符是否元音字母
public static boolean isvowel(char c) {
return c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U'
|| c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}
四、执行用时
五、部分测试用例
public static void main(String[] args) {
String S = "I speak Goat Latin"; // output:"Imaa peaksmaaa oatGmaaaa atinLmaaaaa"
// String S = "The quick brown fox jumped over the lazy dog";
// output:"heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"
String result = toGoatLatin(S);
System.out.println(result);
}