Leetcode 345. 反转字符串中的元音字母 C++

Leetcode 345. 反转字符串中的元音字母

题目

编写一个函数,以字符串作为输入,反转该字符串中的元音字母。

测试样例

示例 1:
输入: "hello"
输出: "holle"
示例 2:
输入: "leetcode"
输出: "leotcede"
说明:

元音字母不包含字母"y"。

题解

双指针,头尾指针找元音字母,交换即可。详细过程见代码

代码

bool isY(char x){
          
   
        if(x>=A && x<=Z)    x += a-A;
        return x==a || x==e || x==i || x==o || x==u;
    }
    string reverseVowels(string s) {
          
   
        int i=0,j=s.length()-1;
        while(i < j){
          
   
            if(isY(s[i]) && isY(s[j])){
          
   
                swap(s[i],s[j]);
                i++;
                j--;
            }else if(isY(s[i])){
          
   
                j--;
            }else if(isY(s[j])){
          
   
                i++;
            }else{
          
   
                i++;
                j--;
            }
        }
        return s;
    }
经验分享 程序员 微信小程序 职场和发展