zoukankan      html  css  js  c++  java
  • 剑指offer——字符流中第一个不重复的字符

    最后一个字符串类型的题目,原题目链接:字符流中第一个不重复的字符

    为了方便直接观看,此处还是先抄一下题目。

    题目描述:

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

    输出描述:

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

    题目分析:

    输出只出现一次的字符。首先需要建立一个StringBuffer来接收每次过来的字符。

    对于出现的次数,可以建立一个整型数组,使用字符对应的整数作为数组的下标,那么同一个字符在数组中对应的就是同一个位置了;

    我们在该位置存放对应字符出现的次数;每来一个字符,便让该位置的数加一。

    由于字符最多有255个,所以设置数组的长度为256即可。

    最终从头遍历接收的字符,若该字符对应的数组中次数为1,则返回该元素即可

    实现代码如下:

     1 public class Solution {
     2     int[] num = new int[256];
     3     StringBuffer buffer = new StringBuffer();
     4     //Insert one char from stringstream
     5     public void Insert(char ch)
     6     {
     7         num[ch]++;
     8         buffer.append(ch);
     9     }
    10   //return the first appearence once char in current stringstream
    11     public char FirstAppearingOnce()
    12     {
    13         char[] chs = buffer.toString().toCharArray();
    14         for(char ch: chs){
    15             if(num[ch] == 1){
    16                 return ch;
    17             }
    18         }
    19         return '#';
    20     }
    21 }

    代码已在牛客网通过。

  • 相关阅读:
    Spring MVC 拦截器
    spring中MultiActionController的数据绑定
    Hibernate多对多配置
    hibernate实体类配置文件问题(字段使用默认值)
    HibernateTemplate类的使用 (转)
    javascript小笔记(一)
    spring整合hibernate(2)
    Sina AppEngine 的bug
    找工作
    天下武功唯快不破
  • 原文地址:https://www.cnblogs.com/shengguilv/p/12983245.html
Copyright © 2011-2022 走看看