• 面试题50_2:字符流中第一个只出现一次的字符


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

    解题思路

    • 空间换时间,用一个HashMap来保存每个字符出现的次数

    上代码(Java很实用)

    package zr.offer;
    import java.util.HashMap;
    
    public class Num50_2 {
    	
    	private HashMap<Character, Integer> map = new HashMap<>();
    	private StringBuffer stringBuffer = new StringBuffer();
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Num50_2 num50_2 = new Num50_2();
    		num50_2.Insert('g');
    		num50_2.Insert('o');
    		System.out.println(num50_2.FirstAppearingOnce());
    		num50_2.Insert('o');
    		num50_2.Insert('g');
    		num50_2.Insert('l');
    		num50_2.Insert('e');
    		System.out.println(num50_2.FirstAppearingOnce());
    	}
    	
        public void Insert(char ch)
        {
        	stringBuffer.append(ch);
        	if(map.containsKey(ch))
        		map.put(ch,  -1);
        	else
        		map.put(ch, stringBuffer.length() - 1);
        }
    
        public char FirstAppearingOnce()
        {
        	char ans = '#';
        	if(stringBuffer.length() < 1)
        		return ans;
        	
        	for(int i = 0; i < stringBuffer.length(); i++)
        		if(map.get(stringBuffer.charAt(i)) != -1) {
        			ans = stringBuffer.charAt(i);
        			break;
        		}    			
        	return ans;
        }
    }
    
  • 相关阅读:
    Intellij 常用技巧-持续更新
    Android界面组件的四种启动方式
    Preference Screen 首选项
    Oracle OCI-22053:溢出错误
    SQLPLUS使用
    Oracle中数字格式的文本化处理
    MP4V2 移植 (基于imx6 平台)
    IMX6Q camera 应用编程之 摄像头裁剪
    IMX6Q camera驱动分析 (4)
    IMX6Q Camera驱动分析 (3)
  • 原文地址:https://www.cnblogs.com/flyingrun/p/13540468.html
Copyright © 2020-2023  润新知