leetcode_345_反转字符串中的元音字母

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

示例 1:
给定 s = "hello", 返回 "holle".

示例 2:
给定 s = "leetcode", 返回 "leotcede".

注意:
元音字母不包括 "y".

class Solution {
public:
    string reverseVowels(string s) {
        int i=0,j=s.length()-1;
        while(i<j)
        {
            while((isVowel(s[i])==false)&&(i<j))
            {
                i++;
            }
            while((isVowel(s[j])==false)&&(i<j))
            {
                j--;
            }
            swap(s[i],s[j]);
            i++;
            j--;
        }
        return s;
    }
    bool isVowel(char c)
    {
        if((c=='a')||(c=='e')||(c=='i')||(c=='o')||(c=='u')||(c=='A')||(c=='E')||(c=='I')||(c=='O')||(c=='U'))
            return true;
        return false;
    }
};

利用两个指针分别从首尾,类似快排

class Solution {
public:
    string reverseVowels(string s) {
        vector<int> v;
        for(int i=0;i<s.size();i++){
            if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u'||s[i]=='A'||s[i]=='E'||s[i]=='I'||s[i]=='O'||s[i]=='U'){
                v.push_back(i);
            }
        }
        for(int i=0,j=v.size()-1;i<j;i++,j--){
            swap(s[v[i]],s[v[j]]);
        }
        return s;
    }
};

将含有元音字母的位置保存起来,然后交换原字符串中的对应的位置

猜你喜欢

转载自blog.csdn.net/snow_jie/article/details/81206290