345. Reverse Vowels of a String

思路:首尾指针,如果指向元音字母,将其调换

class Solution {
public:
    string reverseVowels(string s) {
        int start = 0, end = s.length() - 1;
        while(start < end)
        {
            while(1==1){
                if(!judge(s[start]))
                    start++;
                else
                    break;
            }
                
            while(1==1)
            {
                if(!judge(s[end]))
                    end--;
                else
                    break;
            }
            // std::cout << s[start] << "---" << s[end] << std::endl;
            // std::cout << start << "---" << end << std::endl;
            if(start > end) //如果在hello中第一次交换e和o之后再次进入进入o和e的情形下跳出循环
                break;
            char temp = s[start];
            s[start] = s[end];
            s[end] = temp;
            // reverse(s[start],s[end]);
            start++;
            end--;
            
            
        }
        return s;
    }
    bool judge(char c)
    {
        return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U';
    }
};

posted @ 2017-09-20 23:16  深海芷兰  阅读(88)  评论(0)    收藏  举报