问题描述
思路解析
- 首先把字符串通过空格分隔开来,用一个字符串数组来接收。
- 因为要经常加上字符,所以使用 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处开始到结尾//然后加上最开始的字符 和 masb.append(list[i].substring(1)+list[i].charAt(0)+"ma");}//添加序列后面的afor(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;}
}