元音字母,即 a e i o u以及大写字母A E I O U,所以需要创建一个数组存入这些字符,以供判断
观察例子,发现是头和尾的两个元音字母进行交换,而不是相邻的两个,所以可以使用双指针
解法分析
两个指针,一个从头,一个从尾,如果两个都指向了元音字母,就交换值
代码
classSolution{public String reverseVowels(String s){// 判空if(s==null)return null;// 头指针int head =0;// 尾指针int end = s.length()-1;// 字符串转换成字符数组char[] result = s.toCharArray();// 循环 直到两个指针相遇while(head <= end){if(!isVowel(result[head])){// 如果头指针不是元音字母
head++;}elseif(!isVowel(result[end])){// 如果尾指针不是元音字母
end--;}else{// 如果两个指向的都是元音字母,就交换值char temp = result[head];
result[head++]= result[end];
result[end--]= temp;}}// 返回字符串returnnewString(result);}// 判断是否是元音字母publicbooleanisVowel(char c){if(c =='a'||
c =='e'||
c =='i'||
c =='o'||
c =='u'||
c =='A'||
c =='E'||
c =='I'||
c =='O'||
c =='U'){returntrue;}returnfalse;}}