zoukankan      html  css  js  c++  java
  • 剑指offer 字符流中第一个不重复的字符

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

    代码:

    class Solution
    {
    public:
        vector<char> q;
        int sign[255]={0};
      //Insert one char from stringstream
        void Insert(char ch)
        {
            q.push_back(ch);
        }
      //return the first appearence once char in current stringstream
        char FirstAppearingOnce()
        {
            if(!sign[ q.back() ])
                sign[ q.back() ] ++;
            else
                sign[ q.back() ] ++;
            for (int i = 0; i < q.size(); i ++){
                if(sign[ q[i] ] == 1)
                    return q[i];
            }
            return '#';
        }
    };

    我的笔记:在类中定义两个公有变量,char类型可变数组q 和 整型数组sign用0填充。首先将每个字符流元素push_back到q数组中,并以q数组中的元素ascii码为位置记录在sign数组中,每出现一次便是其自加,最后循环判断数组中第一个值为1的元素并将其输出。

  • 相关阅读:
    百度地图API
    h5地理位置API
    css3的clip-path属性
    css3的3d属性集合
    模块化之SeaJS(二)
    模块化之SeaJS(一)
    html5制作一个时钟
    闭包论
    UVALive 7066 Intersection(圆环相交面积)
    UVALive 7068 K.Bro Sorting(树状数组求逆序对)
  • 原文地址:https://www.cnblogs.com/john1015/p/12894577.html
Copyright © 2011-2022 走看看