zoukankan      html  css  js  c++  java
  • 剑指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;
    };
  • 相关阅读:
    bzoj1648
    bzoj3404
    bzoj1650
    bzoj1625
    bzoj1606
    bzoj1464
    bzoj1572
    bzoj1617
    bzoj1092
    bzoj1091
  • 原文地址:https://www.cnblogs.com/langyao/p/10631194.html
Copyright © 2011-2022 走看看