剑指offer五十四之字符流中第一个不重复的字符
一、题目
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
二、思路
使用LinkedHadshMap统计字符个数,详见代码注释
三、代码
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set; public class Solution {
LinkedHashMap<Character, Integer> lhm = new LinkedHashMap<Character, Integer>();
//Insert one char from stringstream
public void Insert(char ch)
{
//统计字符的个数,注意用LinkedHashMap
if (lhm.containsKey(ch)) {
lhm.put(ch, lhm.get(ch) + 1);
} else {
lhm.put(ch, 1);
}
}
//return the first appearence once char in current stringstream
public char FirstAppearingOnce()
{
//遍历map,寻找第一个只出现一次的数
char num = 0;
int flag=0; //判断有没有只出现一次的字符
Set<Map.Entry<Character, Integer>> set = lhm.entrySet();
for (Map.Entry<Character, Integer> es : set) {
char key = es.getKey();
int value = es.getValue();
if (value == 1) {
num = key;
flag=1;//有只出现一次的字符
break;
}
}
//没有只出现一次的字符,返回‘#’
if(flag==0){
num='#';
}
flag=0;//复位,为下一次判断准备
return num;
}
}
---------------------------------------------
参考链接:
https://www.nowcoder.com/practice/00de97733b8e4f97a3fb5c680ee10720?tpId=13&tqId=11207&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
剑指offer五十四之字符流中第一个不重复的字符的更多相关文章
- 【剑指Offer】字符流中第一个不重复的字符 解题报告(Python)
[剑指Offer]字符流中第一个不重复的字符 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interv ...
- 剑指offer35题:第一个只出现一次的字符+剑指offer55题:字符流中第一个不重复的字符+剑指offer51题:数组中重复的数字
在看剑指offer的时候,感觉这三个题目很像,都是用哈希表可以解决,所以把这三个题整理出来,以供复习. 剑指offer35题:第一个只出现一次的字符 题目描述:在字符串中找出第一个只出现一次的字符.如 ...
- 剑指offer——python【第54题】字符流中第一个不重复的字符
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...
- Go语言实现:【剑指offer】字符流中第一个不重复的字符
该题目来源于牛客网<剑指offer>专题. 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是 ...
- 剑指Offer 54. 字符流中第一个不重复的字符 (其他)
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...
- (剑指Offer)面试题55:字符流中第一个不重复的字符
题目: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前 ...
- 剑指Offer——字符流中第一个不重复的字符
题目描述: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读 ...
- 【剑指Offer】54、字符流中第一个不重复的字符
题目描述: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字 ...
- [剑指offer] 54. 字符流中第一个不重复的字符
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...
随机推荐
- 2018.07.23[PA2015]Siano(线段树)
[PA2015]Siano 描述 Description 农夫Byteasar买了一片n亩的土地,他要在这上面种草. 他在每一亩土地上都种植了一种独一无二的草,其中,第i亩土地的草每天会长高a[i]厘 ...
- C语言学生管理系统源码分享
大家好 我就是如假包换的...陈玲 自从运营了C语言程序设计微信公众号 很多粉丝都给我备注 ...奇葩 实在是不敢当 也被人开始叫玲玲姐 我知道 很多人都想看我出境 我本人也有 年多的舞台演讲训练 实 ...
- GitBash入门
转载自:http://www.cnblogs.com/randomsteps/p/5415116.html 作为一个初学者,我是跟着廖学峰老师的官方博客学习,这里只是做个笔记,哈哈,关于git的历史. ...
- VBA替换函数
Sub test() On Error Resume Next Dim arr1, arr2, i, j arr1 = Range("T1:EI3") arr2 = Range(& ...
- 使用vbs给PPT(包括公式)去背景
在 视图—>宏 内新建宏 '终极版 Sub ReColor() Dim sld As Slide Dim sh As Shape For Each sld In ActivePresentati ...
- 新建maven web 项目后,出现的小问题
问题一:Description Resource Path Location TypeCannot change version of project facet Dynamic Web Module ...
- IT人员如何有效规划自己时间
中午和任职 DBA 的朋友聊天,他说:"老板老是要我把工作时间填长一点,让整个部门的工作时间比较好看,所以本来做 1 个小时的事要写 3 个小时."但我回答说若这件事情 ...
- Spring的@ModelAttribute注解
1. 一.绑定请求参数到指定对象 public String test1(@ModelAttribute("user") UserModel user) 只是此处多了一个注解@Mo ...
- 【转】Swig Getting Started
Installation Via NPM: $ npm install swig --save Basic Usage Swig has multiple ways to compile and re ...
- 初识构建工具-gradle
构建工具的作用 依赖管理 测试,打包,发布 主流的构建工具 Ant:提供编译,测试,打包 Maven:在Ant的基础上提供了依赖管理和发布的功能 Gradle:在Maven的基础上使用Groovy管理 ...