【力扣】824.山羊拉丁文
问题描述
思路解析
- 首先把字符串通过空格分隔开来,用一个字符串数组来接收。
- 因为要经常加上字符,所以使用 StringBuilder ,最后再进行转化
- 然后检验首字母是否为元音,因为元音字母加上其大小写比较多,所以用一个字符串来存储,然后判断首字母是否在元音字符串中
- 如果在,则直接加上 ma
- 如果不在,则需要从第2个字符开始截取到最后面,再加上第一个字符,然后加上ma
- 因此可以使用 String substring(i),会返回一个新的字符串,从传入字符串的第i个位置开始到结尾
- 首字母是否元音处理完之后,再把序号个数的a加上
- 最后进行转化成字符返回
- 将字符串数组转化为字符,可以使用 join()
-
使用
String.join()
这是最简单和推荐的方式,它可以直接通过静态方法
String.join()
来实现,该方法接收一个分隔符和字符串数组作为参数。
代码
class Solution {
private static final String VOWELS = "aeiouAEIOU";
public String toGoatLatin(String sentence) {
//以空格的形式分隔开
String[] list=sentence.split(" ");
int len=list.length;
for(int i=0;i<len;i++){
char temp_char=list[i].charAt(0);
StringBuilder sb=new StringBuilder();
if (isVowel(temp_char)) {
sb.append(list[i]+"ma");
}
else{
//substring(i)返回一个新的字符串,从该字符串的第i处开始到结尾
//然后加上最开始的字符 和 ma
sb.append(list[i].substring(1)+list[i].charAt(0)+"ma");
}
//添加序列后面的a
for(int j=0;j<i+1;j++){
sb.append('a');
}
//重新存入进去
list[i]= sb.toString();
}
// 接收一个分隔符和字符串数组,将其转换为字符串
String result= String.join(" ",list);
return result;
}
private static boolean isVowel(char c) {
return VOWELS.indexOf(c) >= 0;
}
}