• 字符流中出现的第一个字符


     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;
        }
  • 相关阅读:
    js template实现方法
    linux su和sudo命令的区别
    使用u盘安装os x系统
    单个APP页面支持屏幕旋转
    iOS 抓取 HTML ,CSS XPath 解析数据
    Oslo 相机 App
    App 开发步骤
    iOS 自动布局框架 – Masonry 详解
    细聊 Cocoapods 与 Xcode 工程配置
    2017网页设计趋势
  • 原文地址:https://www.cnblogs.com/ustc-anmin/p/10630787.html
Copyright © 2020-2023  润新知