题目来源:
leetcode题目,网址:824. 山羊拉丁文 - 力扣(LeetCode)
解题思路:
遍历字符串,以非字母字符为一个单词结束的标记,按要求将单词逐个处理即可。
解题代码:
class Solution {
public String toGoatLatin(String sentence) {
StringBuffer strb=new StringBuffer();
StringBuffer word=new StringBuffer();
char fir='\u0000';
int wordNum=1;
for(int i=0;i<sentence.length();i++){
char temp=sentence.charAt(i);
if(Character.isLetter(temp)){
if(word.length()==0 && fir=='\u0000' ){
fir=temp;
}else{
word.append(temp);
}
}else{
if(word.length()==0 && fir=='\u0000'){
strb.append(temp);
}else{
word=modify(word,fir,wordNum);
strb.append(word);
strb.append(temp);
word=new StringBuffer();
fir='\u0000';
wordNum++;
}
}
}
if(word.length()!=0 || fir!='\u0000'){
word=modify(word,fir,wordNum);
strb.append(word);
}
return strb.toString();
}
public StringBuffer modify(StringBuffer word,char fir,int num){
String vowel=new String("aeiouAEIOU");
if(vowel.contains(Character.toString(fir))){
word.insert(0,fir);
}else{
word.append(fir);
}
word.append("ma");
for(int i=0;i<num;i++){
word.append('a');
}
return word;
}
}
总结:
没注意到题目中以表明只会出现字母和字符,可以直接使用切片函数。