给你一个字符串 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 数据类型(参数)/{参数 }