345.Reverse Vowels of a String
Given a string s
, reverse only all the vowels in the string and return it.
The vowels are 'a'
, 'e'
, 'i'
, 'o'
, and 'u'
, and they can appear in both cases.
Example 1:
Input: s = "hello"
Output: "holle"
Example 2:
Input: s = "leetcode"
Output: "leotcede"
用Hash表查找,用双指针方法解题,这里注意hashSet的创建方法。以及在过程中,注意要用零时变量存储当前的指针指向对象,否则会报错。
class Solution {
private final static HashSet<Character> vowels = new HashSet<> (
Arrays.asList('a','e','i','o','u','A','E','I','O','U'));
public String reverseVowels(String s) {
if (s == null) return null;
int high = s.length()-1, low = 0;
char[] res = new char[s.length()];
while(low<=high){
char down = s.charAt(low);
char up = s.charAt(high);
if (!vowels.contains(down)) res[low++] = down;
else if (!vowels.contains(up)) res[high--] = up;
else {
res[high--] = down;
res[low++] = up;
}
}
return new String(res);
}
}