美文网首页Leetcode
Leetcode 345. Reverse Vowels of

Leetcode 345. Reverse Vowels of

作者: SnailTyan | 来源:发表于2018-10-14 14:29 被阅读3次

    文章作者:Tyan
    博客:noahsnail.com  |  CSDN  |  简书

    1. Description

    Reverse Vowels of a String

    2. Solution

    • Version 1
    class Solution {
    public:
        string reverseVowels(string s) {
            unordered_map<char, char> m;
            m['a'] = 'a';
            m['e'] = 'e';
            m['i'] = 'i';
            m['o'] = 'o';
            m['u'] = 'u';
            m['A'] = 'a';
            m['E'] = 'e';
            m['I'] = 'i';
            m['O'] = 'o';
            m['U'] = 'u';
            int i = 0;
            int j = s.length() - 1;
            while(i < j) {
                if(m.find(s[i]) == m.end()) {
                    i++;
                }
                if(m.find(s[j]) == m.end()) {
                    j--;
                }
                if(m.find(s[i]) != m.end() && m.find(s[j]) != m.end()) {
                    swap(s[i], s[j]);
                    i++;
                    j--;
                }
            }
            return s;
        }
    private:
        void swap(char& a, char& b) {
            char temp = a;
            a = b;
            b = temp;
        }
    };
    
    • Version 2
    class Solution {
    public:
        string reverseVowels(string s) {
            unordered_map<char, char> m;
            m['a'] = 'a';
            m['e'] = 'e';
            m['i'] = 'i';
            m['o'] = 'o';
            m['u'] = 'u';
            m['A'] = 'a';
            m['E'] = 'e';
            m['I'] = 'i';
            m['O'] = 'o';
            m['U'] = 'u';
            int i = 0;
            int j = s.length() - 1;
            while(i < j) {
                while(i < j && m.find(s[i]) == m.end()) {
                    i++;
                }
                while(i < j && m.find(s[j]) == m.end()) {
                    j--;
                }
                swap(s[i++], s[j--]);
            }
            return s;
        }
    private:
        void swap(char& a, char& b) {
            char temp = a;
            a = b;
            b = temp;
        }
    };
    

    Reference

    1. https://leetcode.com/problems/reverse-vowels-of-a-string/description/

    相关文章

      网友评论

        本文标题:Leetcode 345. Reverse Vowels of

        本文链接:https://www.haomeiwen.com/subject/wcwzaftx.html