1、原题
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入:"hello"
输出:"holle"
示例 2:
输入:"leetcode"
输出:"leotcede"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-vowels-of-a-string
2、思路
3、代码
// Swift
class Solution {
func reverseVowels(_ s: String) -> String {
// 字符串转数组
var strArr = Array(s)
// 元音
let vowels: Set<Character> = ["a", "A", "e", "E", "i", "I", "o", "O", "u", "U"]
// 定义双指针
var i = 0
var j = strArr.count - 1
while i < j {
if !vowels.contains(strArr[i]) {
i += 1
continue
}
if !vowels.contains(strArr[j]) {
j -= 1
continue
}
// 交换数组的两个值
strArr.swapAt(i, j)
i += 1
j -= 1
}
return String(strArr)
}
}
// C++
class Solution {
public:
string reverseVowels(string s) {
//使用双指针
int i = 0;
int j = s.length() - 1;
while (i < j)
{
if (!isOrNot(s[i])) {
i ++;
continue;
}
if (!isOrNot(s[j])) {
j --;
continue;
}
swap(s[i++], s[j--]);
}
return s;
}
bool isOrNot(char c) {
return (c == 'a' || c == 'A' ||
c == 'e' || c == 'E' ||
c == 'i' || c == 'I' ||
c == 'o' || c == 'O' ||
c == 'u' || c == 'U');
}
};
网友评论