zoukankan      html  css  js  c++  java
  • [剑指Offer] 54.字符流中的第一个不重复的字符

    题目描述

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

    输出描述:
    如果当前字符流没有存在出现一次的字符,返回#字符。

    【思路】可以发现,出现的字符 和 它的出现的次数 是一种对应关系,自然联想到 哈希表key-value 这种对应,或者应用关联容器 map,可以很方便的解决这个问题。map 容器中,它的一个元素 就是一组(key,value)对应的数据

     1 class Solution
     2 {
     3 public:
     4   //Insert one char from stringstream
     5     void Insert(char ch)
     6     {
     7         Vec.push_back(ch);
     8         Map[ch]++;
     9     }
    10   //return the first appearence once char in current stringstream
    11     char FirstAppearingOnce()
    12     {
    13         for(vector<char>::iterator iter = Vec.begin();iter != Vec.end();iter ++){
    14             if(Map[*iter] == 1)
    15                 return *iter;
    16         }
    17         return '#';
    18     }
    19     vector<char> Vec;
    20     unordered_map<char,int> Map;
    21 };
  • 相关阅读:
    redis未授权访问简单总结
    CORS跨域资源共享漏洞初探
    Mysql UDF提权方法
    hacknos-player靶机渗透
    深入理解Java虚拟机-类加载连接和初始化解析
    Dnslog盲注
    让服务器使用密钥
    自动备份站点
    自动放行nginx后台访问ip
    mysql增备
  • 原文地址:https://www.cnblogs.com/lca1826/p/6560951.html
Copyright © 2011-2022 走看看