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 };
  • 相关阅读:
    适配者模式7(10)
    规范使用线程池与底层原理详解
    Java集合多线程安全
    CAS底层原理与ABA问题
    手写数字识别-小数据集
    深度学习-卷积
    Java并发编程volatile关键字
    朴素贝叶斯-垃圾邮件分类
    K均值算法
    mysql搭建主从复制(一主一从,双主双从)
  • 原文地址:https://www.cnblogs.com/lca1826/p/6560951.html
Copyright © 2011-2022 走看看