1. 程式人生 > >leetcode 345.反轉字串中的母音字母

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;
    }