LeetCode 168. Excel Sheet Column Title
考点 | 难度 |
---|---|
String | Easy |
题目
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.
思路
用两个pointer,现判断是否都是vowel,如果不是就移动到最近的元音,之后swap两个位置上的字母。helper function:判断是否为vowel。
答案
public String reverseVowels(String s) {
if (s.length() == 0) return s;
char[] arr = s.toCharArray();
int low = 0;
int high = arr.length - 1;
while (low < high) {
if (!isVowel(arr[low]) && !isVowel(arr[high])) {
low++;
high--;
} else if (!isVowel(arr[low])) {
low++;
} else if (!isVowel(arr[high])) {
high--;
} else {
char temp = arr[low];
arr[low] = arr[high];
arr[high] = temp;
low++;
high--;
}
}
return new String(arr);
}
private boolean isVowel(char ch) {
ch = Character.toLowerCase(ch);
return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u';
}