zoukankan      html  css  js  c++  java
  • 面试题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;
        }
    }
    
  • 相关阅读:
    淘宝技术分享
    15个富有创意的单页设计
    jQuery全能图片滚动插件
    jquery性能优化
    Algs4-1.4.40随机输入3-sum问题
    Algs4-1.4.39 改进倍率测试的精度
    Algs4-1.4.38 3-sum的初级算法与ThreeSum性能比较
    Algs4-1.4.37自动装箱的性能代价
    Algs4-1.4.35下压栈的时间成本
    Algs4-1.4.36下压栈的空间成本
  • 原文地址:https://www.cnblogs.com/flyingrun/p/13540468.html
Copyright © 2011-2022 走看看