字符流中第一个不重复的字符

题目描述

  请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。
输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。

代码及讲解

代码

public class Solution {
    int[] hash = new int[256];
    StringBuffer s = new StringBuffer();
    //Insert one char from stringstream
    public void Insert(char ch)
    {
        s.append(ch);
        hash[ch]++;
    }
  //return the first appearence once char in current stringstream
    public char FirstAppearingOnce()
    {
      char[] str=s.toString().toCharArray();
      for(char c:str)
      {
          if(hash[c]==1)
              return c;
      }
      return '#';
    }
}

讲解
  模拟创建一个hash数组 ,我们只需遍历一遍自己定义的hash数组就可以找到第一个只出现一次的字符;时间复杂度为o(n);

    原文作者:Taoyongpan
    原文地址: https://www.jianshu.com/p/33036990e55f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞