您的位置:首页 > 其它

Leetcode - Reverse Vowels of a String

2016-05-05 19:10 344 查看

Question

Write a function that takes a string as input and reverse only the vowels of a string.

Example

Given s = “hello”, return “holle”.

Given s = “leetcode”, return “leotcede”.

Java Code

public String reverseVowels(String s) {
int len = s.length();
if(len < 2) return s;
char[] str = s.toCharArray();
int i = 0;
int j = len - 1;

//从数组的两端往中间搜索
while(i < j) {
if(isVowel(str[i])) {
if(isVowel(str[j]))
swap(str, i++, j--);//如果两者都是元音字母,交换之且两个指针都移向下一位
else
j--;//j指针一直遍历直到指向元音字母
}else
i++;//i指针一直遍历直到指向元音字母
}

return new String(str);
}

//判断一个字符是否为元音字母
public boolean isVowel(char ch) {
switch(ch) {
case 'a' :
case 'e' :
case 'i' :
case 'o' :
case 'u' :
case 'A' :
case 'E' :
case 'I' :
case 'O' :
case 'U' :
return true;
default :
return false;
}
}

//交换数组中的两个元素
public void swap(char[] str, int i, int j) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode vowel swap