题目描述:
给定一个字符串 s,你需要反转其中所有的元音字母。
示例 1:
输入: "hello" 输出: "holle"
示例 2:
输入: "leetcode" 输出: "leotcede"
设计思路:
首先,我们需要明确什么是元音字母,即 a、e、i、o、u 这五个字母。
接下来,我们可以使用双指针的方法,一个指针从字符串头部开始,一个指针从字符串尾部开始,每次比较两个指针指向的字符是否都是元音字母,如果都是,则交换两个字符的位置,直到两个指针相遇为止。
程序流程图:
- 定义两个指针 i 和 j,分别指向字符串头部和尾部。
- 定义一个字符串 vowels,保存所有元音字母。
- while 循环,当 i < j 时,执行以下操作:
- 判断 s[i] 是否为元音字母,如果不是,则 i++。
- 判断 s[j] 是否为元音字母,如果不是,则 j--。
- 如果 s[i] 和 s[j] 都是元音字母,则交换两个字符的位置。
- i++,j--。
- 返回反转后的字符串 s。
代码实现:
class Solution {
public:
string reverseVowels(string s) {
int i = 0, j = s.size() - 1;
string vowels = "aeiouAEIOU";
while (i < j) {
if (vowels.find(s[i]) == string::npos) {
i++;
} else if (vowels.find(s[j]) == string::npos) {
j--;
} else {
swap(s[i++], s[j--]);
}
}
return s;
}
};
标签:周四,string,字母,vowels,字符串,元音,指针 From: https://www.cnblogs.com/zeyangshuaige/p/17431844.html