zoukankan      html  css  js  c++  java
  • LeetCode 345. Reverse Vowels of a String(双指针)

    题意:给定一个字符串,反转字符串中的元音字母。

    例如:

    Input: "leetcode"
    Output: "leotcede"
    

    法一:双指针

    class Solution {
    public:
        string reverseVowels(string s) {
            if(s == "") return "";
            set <char> st ={'a','e','i','o','u','A','E','I','O','U'};
            int head = 0;
            int tail = s.size() - 1;
            char ans[10000000] = {};
            while(head <= tail){
                char h = s[head];
                char t = s[tail];
                if(st.find(h) == st.end()){
                    ans[head++] = h;
                }
                else if(st.find(t) == st.end()){
                    ans[tail--] = t;
                }
                else{
                    ans[head++] = t;
                    ans[tail--] = h;
                }
            }
            return string(ans);
        }
    };
    

    法二:首先将字符串中所有元音字母按顺序记录在v中,然后逆序遍历字符串,将v中的元音字母依次替换到逆序遍历过程中遍历到的元音字母中即可。

    class Solution {
    public:
        string reverseVowels(string s) {
            if(s == "") return "";
            set <char> st ={'a','e','i','o','u','A','E','I','O','U'};
            vector<char> v;
            int len = s.size();
            for(int i = 0; i < len; ++i){
                if(st.find(s[i]) != st.end()){
                    v.push_back(s[i]);
                }
            }
            int vowel_len = v.size();
            for(int i = len - 1, j = 0; i >= 0 && j < vowel_len; --i){
                if(st.find(s[i]) != st.end()){
                    s[i] = v[j++];
                }
            }
            return s;
        }
    };
    

      

  • 相关阅读:
    spark RDD操作的底层实现原理
    Spark累加器(Accumulator)陷阱及解决办法
    spark collect获取所有元素
    spark submit 入门
    pyspark使用ipython
    top k
    快速排序
    用 Spark 为 Elasticsearch 导入搜索数据
    静态成员变量不占用类的内存空间
    重载函数的调用匹配规则
  • 原文地址:https://www.cnblogs.com/tyty-Somnuspoppy/p/12325175.html
Copyright © 2011-2022 走看看