Leetcode:345.反转字符串中的元音字符
题目描述
Leetcode:https://leetcode-cn.com/problems/reverse-vowels-of-a-string/
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入: “hello”
输出: “holle”
示例 2:
输入: “leetcode”
输出: “leotcede”
说明:
元音字母不包含字母"y"。
解题思路
使用双指针,一个从头到尾遍历,一个从尾到头遍历。
遇到元音字符交换,否则不交换。
java代码
class Solution {
private final static HashSet<Character> vowels = new HashSet<>(
Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));
public String reverseVowels(String s) {
int i = 0, j = s.length() - 1;
char[] result = new char[s.length()];
while(i <= j){
char ci = s.charAt(i);
char cj = s.charAt(j);
if(!vowels.contains(ci))
result[i++] = ci;
else if(!vowels.contains(cj))
result[j--] = cj;
else{
result[i++] = cj;
result[j--] = ci;
}
}
return new String(result);
}
}
python代码
class Solution:
def reverseVowels(self, s: str) -> str:
vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']
#str是不可变类型,化为list可变类型
t = list(s)
i , j = 0, len(s) - 1
while i <= j:
if t[i] not in vowels:
i += 1
continue
elif t[j] not in vowels:
j -= 1
continue
else:
t[i], t[j] = t[j], t[i]
i += 1
j -= 1
return "".join(t)
本文参考自CyC2018的GitHub项目更多内容访问如下链接
https://github.com/CyC2018/CS-Notes