给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。
元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现。
代码思路:
1.将字符串转换为字符数组
2.设置碰撞指针,从两头寻找元音字母
3.将元音字母交换
class Solution {
public String reverseVowels(String s) {
int n = s.length();
int left = 0;
int right = n-1;
char[] arr = s.toCharArray();//将字符串转换为字符数组
//设置碰撞指针,从两头寻找元音字母
while(left<right){
while(left<right&&!isVowel(arr[left])){
left++;
}
while(left<right&&!isVowel(arr[right])){
right--;
}
//将元音字母交换
if(left<right){
swap(left,right,arr);
left++;
right--;
}
}
return new String(arr);
}
//判断是否为元音
public boolean isVowel(char ch){
return "aeiouAEIOU".indexOf(ch)>=0;
}
//交换
public void swap(int left,int right,char[] arr){
char temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
}
1.当问题比较复杂时,可以在类里面设置方法,模块化,重用性提高,也比较明白易懂
2.返回字符串:
return new String(arr);
和返回数组比较:
return new int[]{-1, -1};
都是
return new 数据类型(参数)/{参数 }