zoukankan      html  css  js  c++  java
  • 字符流中出现的第一个字符

     1 package algorithms;
     2 
     3 import java.util.HashMap;
     4 
     5 public class FirstAppearingOnce {
     6     HashMap<Character,Integer> hm = new HashMap<>();
     7     StringBuffer sb = new StringBuffer();
     8     //Insert one char from stringstream
     9     public void Insert(char ch)
    10     {
    11         if(hm.containsKey(ch)) {
    12             hm.put(ch, hm.get(ch)+1);
    13         }else {
    14             hm.put(ch, 1);
    15         }
    16         sb.append(ch);
    17     }
    18   //return the first appearence once char in current stringstream
    19     public char FirstAppearingOnce_1()
    20     {
    21         char[] str = sb.toString().toCharArray();
    22         for(int i=0;i<str.length;i++) {
    23             if(hm.get(str[i])==1) {
    24                 return str[i];
    25             }
    26         }
    27         return '#';
    28     }
    29 }

    其实也可以自己实现一个简易的hashmap用来解决该道题

    因为char(8位)有256种取值  所以可以创建一个长度为256的数组  数组的下标即为ascii码值  数组的值即为出现的次数,如下所示:

    int[] arr = new int[256];
        StringBuffer s = new StringBuffer();
        //Insert one char from stringstream
        public void Insert(char ch)
        {
            s.append(ch);
            arr[ch] +=1;
        }
  • 相关阅读:
    机房收费系统——报表(2)
    机房收费系统——报表(1)
    机房收费系统之结账
    机房管理系统——vb与excel链接2
    机房管理系统——VB与Excel的链接
    Unity
    Android Dev Tips
    Android JSON And Object Cast
    Android Screen Orientation
    iOS8 with Swift
  • 原文地址:https://www.cnblogs.com/ustc-anmin/p/10630787.html
Copyright © 2011-2022 走看看