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

题目描述:

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

思路:从前往后找到一个元音字母,再从后往前找到一个元音字母,然后把他们对换;持续这个操作,直到前后两个方向遍历到同一个位置。由于每个元素都访问一次,复杂度应该是O(n)。

    inline bool isVowel(char c)
    {
        if(c=='a'||c=='A'||c=='e'||c=='E'||c=='i'
           ||c=='I'||c=='o'||c=='O'||c=='u'||c=='U')
            return true;
        return false;
    }
    string reverseVowels(string s) {
        int i=0,j=s.size();
        while(i<j)
        {
            //分别从前面和后面找到一个元音字母
            while(i<j && !isVowel(s[i])) i++;
            while(j>i && !isVowel(s[j])) j--;
            //对调
            if(i<j)
                swap(s[i++],s[j--]);
        }
        return s;
    }

猜你喜欢

转载自blog.csdn.net/liusiweix/article/details/84075833