关闭

剑指offer-字符流中第一个不重复的字符

标签: java函数hashmap
342人阅读 评论(0) 收藏 举报
分类:

题目描述

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

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

分析:
简单的做法是直接定义一个二维数组,存放(字符–数目)
但,java中有一个非常方便的linkedhashmap,保存键值对的同时还保存元素存放的顺序。

import java.util.LinkedHashMap;
import java.util.Map;


public class Solution {
    Map<Character, Integer> map = new LinkedHashMap<>();

    //Insert one char from stringstream
    public void Insert(char ch)
    {
        if(map.containsKey(ch)){
            map.put(ch, map.get(ch)+1);
        }else{
            map.put(ch, 1);
        }
    }

    //return the first appearence once char in current stringstream
    public char FirstAppearingOnce()
    {
        for(Map.Entry<Character, Integer> set:map.entrySet()){
            if(set.getValue()==1){
                return set.getKey();
            }
        }
        return '#';

    }
}
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

剑指Offer——字符流中第一个不重复的字符

题目描述:请实现一个函数用来找出字符流中第一个只出现一次的字符。 例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从字符流中读出字符"google"时,第一个只出现一次的字符是"l"。 解...
  • xiaominkong123
  • xiaominkong123
  • 2016-05-23 20:20
  • 159

《剑指offer》——字符流中第一个不重复的字符

题目: 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。思路: 首先应当明确,字符流是指像流水一样的字符,一去不复返,意味着只能访问...
  • zengzhen_CSDN
  • zengzhen_CSDN
  • 2016-03-12 17:32
  • 421

[剑指Offer]面试题35:第一个只出现一次的字符

题目给定一个字符串,求第一个不重复的字符 abbcad -> c解题思路:今天中午面试的时候第二题我的思路是从头开始扫描字符串中的每个字符。当访问到某字符时拿这个字符和后面的每个字符相比较。如果在后面没有发现重复的字符,则该字符就是只出现一次的字符。如果字符串有n个字符,每个字符可能与后...
  • CodeEmperor
  • CodeEmperor
  • 2016-03-19 10:23
  • 1165

剑指offer----字符流中第一个不重复的字符----java实现

题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。&...
  • snow_7
  • snow_7
  • 2016-07-17 21:17
  • 1139

剑指offer-面试题55-字符流中第一个不重复的字符

package case55_FirstCharInStream; import java.util.LinkedHashMap; /** * 题目:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符“go”时,第一个只出现一次的字符是‘g’。 * 当从...
  • VIP_WangSai
  • VIP_WangSai
  • 2017-04-29 12:34
  • 313

剑指Offer----面试题28----扩展:字符的所有组合

题目: 求字符的所有组合,例如输入abc, 则他们的所有组合有a、b、c、ab、ac、bc、abc。 分析: 如果输入n个字符,则这n个字符所构成长度为1的组合,长度为2的组合,......,长度为n的组合。求n个字符的长度为m(1 源代码如下: #include ...
  • qianqin_2014
  • qianqin_2014
  • 2016-06-06 22:41
  • 513

剑指offer面试题28:字符串的排列 Java实现

题目: 输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab,cba. 算法分析: 我们求整个字符串的排列,可以看成两步: 1.求得所有可能出现在第一个位置的字符,即把第一个字符和后面的...
  • gg543012991
  • gg543012991
  • 2016-09-14 19:42
  • 599

剑指offer——数组中重复的数字

问题描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。思路:方法一:创建一个容...
  • sbq63683210
  • sbq63683210
  • 2016-07-20 16:03
  • 334

[剑指Offer]数组中重复的数字

题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。  思路...
  • shakespeare001
  • shakespeare001
  • 2016-04-26 17:20
  • 1511

牛客网刷题--剑指offer(两个栈实现队列)

牛客网给出的题目要求是用两个栈数据结构实现一个队列的push和pop操作。 两个栈实现队列这是很好理解的。因为栈的特性是后进先出(LIFO),而队列的特性是先进先出(FIFO),那两个栈连在一块儿,第一个栈先进后出,然后从第一个栈再入第二个栈,还是先进后出,这样,先是倒序入第一栈,然后再倒序入第二...
  • liu_sheng_1991
  • liu_sheng_1991
  • 2016-06-29 17:56
  • 411
    个人资料
    • 访问:90960次
    • 积分:2311
    • 等级:
    • 排名:第18854名
    • 原创:141篇
    • 转载:27篇
    • 译文:0篇
    • 评论:1条
    最新评论