• 剑指offer--46.字符流中第一个不重复的字符


    双端队列

    --------------------------------------------------------

    时间限制:1秒 空间限制:32768K 热度指数:113070
    本题知识点: 字符串

    题目描述

    请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。

    输出描述:

    如果当前字符流没有存在出现一次的字符,返回#字符。
    class Solution {
        public:
            //Insert one char from stringstream
            void Insert(char ch) {
                ++mark[ch];
                if( mark[ch] == 1) {
                    str.push_back(ch);
                }
            }
            //return the first appearence once char in current stringstream
            char FirstAppearingOnce() {
                while( !str.empty() && mark[str.front()] > 1) str.pop_front();
                if( str.empty() ) return '#';
                return str.front();
            }
        private:
            unsigned char mark[128];
            deque<char> str;
    };
  • 相关阅读:
    WP8.1通过StreamSocket连接C++服务器
    WP10通过StreamSocket连接C++服务器
    二维背包(两个限制条件)
    dp(多重背包)
    dp(完全背包)
    dfs(迷宫)
    bfs迷宫
    蚁人cp数
    二分(老死不相往来)
    前缀和(狼和野牛)
  • 原文地址:https://www.cnblogs.com/langyao/p/10631194.html
Copyright © 2020-2023  润新知