給你一個字符串 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 數據類型(參數)/{參數 }