写一个方法,接受给定字符串作为输入,并且只翻转字符串中的元音字母。
样例
样例 1:
输入 : s = "hello"
输出 : "holle"
样例 2:
输入 : s = "lintcode"
输出 : "lentcodi".
注意事项
元音字母不包含字母 "y"。
解题思路:
对撞指针。使用哈希表存储元音字母,注意大写也算!指针l,r分别指向左边的元音字母与右边的元音字母。
public class Solution {
/**
* @param s: a string
* @return: reverse only the vowels of a string
*/
public String reverseVowels(String s) {
// write your code here
char[] ss = s.toCharArray();
int l=0, r=ss.length-1;
while(l < r){
while(l<r && !isVowel(ss[l]))
l++;
while(l<r && !isVowel(ss[r]))
r--;
swap(ss, l++, r--);
}
return new String(ss);
}
private boolean isVowel(char c){
if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U')
return true;
return false;
}
private void swap(char[] nums, int i, int j){
char temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}