题目:函数
编写一个函数,以字符串做为输入,反转该字符串中的元音字母。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'; } }