Write a function that takes a string as input and reverse only the vowels of a string.
Example 1:
Given s = "hello", return "holle".
Given s = "hello", return "holle".
Example 2:
Given s = "leetcode", return "leotcede".
Solution:Given s = "leetcode", return "leotcede".
Just use two point from start and end of the string, respectively.
BE CAREFUL ABOUT THE UPPER CASE!
Code(Java):
public class Solution {
public String reverseVowels(String s) {
if (s == null || s.length() == 0) {
return "";
}
char[] cs = s.toCharArray();
int start = 0;
int end = cs.length - 1;
while (start < end) {
while (start < end && !isVowel(cs[start])) {
start++;
}
while (start < end && !isVowel(cs[end])) {
end--;
}
if (start < end) {
swap(cs, start, end);
start++;
end--;
}
}
return new String(cs);
}
private boolean isVowel(char b) {
char c = Character.toLowerCase(b);
return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}
private void swap(char[] cs, int start, int end) {
char temp = cs[start];
cs[start] = cs[end];
cs[end] = temp;
}
}
No comments:
Post a Comment