编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入: "hello" 输出: "holle"
示例 2:
输入: "leetcode" 输出: "leotcede"
说明:
元音字母不包含字母"y"。
这道题目的解题思路与167号问题两数之和一致,这里只分享一下Java和Python的代码实现
Java
public String reverseVowels(String s) {
if (s.equals("") || s.length() < 2) {
return s;
}
int i = 0;
int j = s.length() - 1;
char[] c = s.toCharArray();
while (i < j) {
if (isVowel(c[i]) && isVowel(c[j])) {
char temp = c[i];
c[i++] = c[j];
c[j--] = temp;
} else if (isVowel(c[i])) {
j--;
} else {
i++;
}
}
return String.valueOf(c);
}
private boolean isVowel(char c) {
return c == 'a' || c == 'i' || c == 'e' || c == 'o' || c == 'u'
|| c == 'A' || c == 'I' || c == 'E' || c == 'O' || c == 'U';
}
Python
def reverseVowels(self, s):
"""
:type s: str
:rtype: str
"""
vowel = "AEIOUaeiou"
array = list(s)
i = 0
j = len(array) - 1
while i < j:
if array[i] in vowel and array[j] in vowel:
array[i], array[j] = array[j], array[i]
i += 1
j -= 1
elif array[i] in vowel:
j -= 1
else:
i += 1
return ''.join(array)