题目

reverse-vowels-of-a-string/


算法

* 直接

* find_first_of/find_last_of

* 放入一个字符串


代码

* 直接


class Solution {

public:

    string reverseVowels(string s) {

        int left = 0, right= s.size() - 1;

        while (left < right) {

            if (isVowel(s[left]) && isVowel(s[right])) {

                swap(s[left++], s[right--]);

            } else if (isVowel(s[left])) {

                --right;

            } else {

                ++left;

            }

        }

        return s;

    }

    bool isVowel(char c) {

        return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U';

    }

};

* find_first_of/find_last_of


class Solution {

public:

    string reverseVowels(string s) {

        int left = 0, right = s.size() - 1;

        while (left < right) {

            left = s.find_first_of("aeiouAEIOU", left);

            right = s.find_last_of("aeiouAEIOU", right);

            if (left < right) {

                swap(s[left++], s[right--]);

            }

        }

        return s;

    }

};

* 放入一个字符串


class Solution {

public:

    string reverseVowels(string s) {

        int left = 0, right = s.size() - 1;

        string t = "aeiouAEIOU";

        while (left < right) {

            if (t.find(s[left]) == string::npos) ++left;

            else if (t.find(s[right]) == string::npos) --right;

            else swap(s[left++], s[right--]);

        }

        return s;

    }

};

results matching ""

    No results matching ""