典型的两根指针,对于当中的指针变换,我们需要好好总结一下。
public class Solution {
Set<Character> set;
private Set<Character> getSet() {
if (set == null) {
set = new HashSet<>();
set.add('a');
set.add('e');
set.add('i');
set.add('o');
set.add('u');
set.add('A');
set.add('E');
set.add('I');
set.add('O');
set.add('U');
}
return set;
}
public String reverseVowels(String s) {
if (s == null || s.length() < 2) {
return s;
}
int left = 0, right = s.length() - 1;
Set<Character> set = getSet();
char[] cArray = s.toCharArray();
while (left < right) {
if (!set.contains(cArray[left])) {
left++;
continue;
}
if (!set.contains(cArray[right])) {
right--;
continue;
}
char temp = cArray[left];
cArray[left] = cArray[right];
cArray[right] = temp;
left++;
right--;
}
return new String(cArray);
}
}