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

作者: Taoyongpan | 来源:发表于2018-03-30 10:46 被阅读7次

    题目描述

      请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"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);

    相关文章

      网友评论

        本文标题:字符流中第一个不重复的字符

        本文链接:https://www.haomeiwen.com/subject/txwbcftx.html