周四

题目描述:

给定一个字符串 s,你需要反转其中所有的元音字母。

示例 1:

输入: "hello" 输出: "holle"

示例 2:

输入: "leetcode" 输出: "leotcede"

设计思路:

首先,我们需要明确什么是元音字母,即 a、e、i、o、u 这五个字母。

接下来,我们可以使用双指针的方法,一个指针从字符串头部开始,一个指针从字符串尾部开始,每次比较两个指针指向的字符是否都是元音字母,如果都是,则交换两个字符的位置,直到两个指针相遇为止。

程序流程图:

  1. 定义两个指针 i 和 j,分别指向字符串头部和尾部。
  2. 定义一个字符串 vowels,保存所有元音字母。
  3. while 循环,当 i < j 时,执行以下操作:
    1. 判断 s[i] 是否为元音字母,如果不是,则 i++。
    2. 判断 s[j] 是否为元音字母,如果不是,则 j--。
    3. 如果 s[i] 和 s[j] 都是元音字母,则交换两个字符的位置。
    4. i++,j--。
  4. 返回反转后的字符串 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;
}
};

 

posted @ 2023-05-25 16:50  菜鸟de博客  阅读(30)  评论(0)    收藏  举报