題目:函數
編寫一個函數,以字符串做爲輸入,反轉該字符串中的元音字母。spa
示例1:指針
輸入: "hello"code
輸出: "holle"blog
示例2:leetcode
輸入: "leetcode"字符串
輸出: "leotcede"class
思路:循環
定義兩個指針,左指針從左向右掃描找到元音字母,右指針從右向左掃描找到元音字母,掃描過程當中判斷左指針是否小於右指針,不然退出循環,直接交換(這時左右指針相等)。di
代碼:
class P345{ public String reverseVowels(String s) { if (s == null || s.length() < 2) { return s; } char[] arr = s.toCharArray(); int left = 0; int right = arr.length - 1; char tmp;
//外層循環 while (left < right) { while (left < right && !isVowels(arr[left])) { left++; } while (left < right && !isVowels(arr[right])) { right--; } tmp = arr[left]; arr[left] = arr[right]; arr[right] = tmp; left++; right--; } return new String(arr); } private boolean isVowels(char ch) { return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U'; } }