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的元素并将其输出。

  • 相关阅读:
    04-Bootstrap的插件
    03-Bootstrap学习
    02-移动端单位介绍
    01 响应式页面-@media介绍,
    14-jQuery补充
    13-jQuery的ajax
    12-事件委托(事件代理)
    11-jQuery的事件绑定和解绑
    10-事件对象
    09-JS的事件流的概念(重点)
  • 原文地址:https://www.cnblogs.com/john1015/p/12894577.html
Copyright © 2011-2022 走看看