https://leetcode-cn.com/problems/reverse-vowels-of-a-string/
需要元音字母保存起来,然后看是否字符串中的字符有这些元音字母。
也是用到了双指针,因为需要交换,所以要定一个从左遍历,一个从右遍历,
如果不是元音的话,就直接放在新的字符串中,如果是元音的话,就和另外一个指针也是元音的交换顺序。
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 i = 0;
int j = s.length() - 1;
char[] result = new char[s.length()];
while( i <= j){
char ci = s.charAt(i);
char cj = s.charAt(j);
if(!vowels.contains(ci)){
result[i++] = ci;
}
else if(!vowels.contains(cj)){
result[j++] = cj;
}
else{
result[i++] = cj;
result[j++] = ci;
}
}
return new String(result);
}
}
定义了一个HashSet,之后要调用它的contains方法,判断遍历到的字符是否是元音
在new这个HashSet的时候用了Arrays.asList方法,并且还是用char的包装类Character
过程中还使用了String的charAt方法,返回的是指定索引处的字符