找到第一个不重复的字符
找到第一个不重复的字符
例如:
a happy pig
a 重复2次
h 重复1次
p 重复3次
y 重复1次
g 重复1次
i 重复一次
编写一个返回第一个不重复字符h的方法
什么样得数据结构最适合快速查找项目?
可以使用哈希表存储每个字符及其重复的次数。
1.构建哈希表
2.迭代字符串
3.得到当前字符串并查找它重复的次数
4.是重复就忽略,继续查询下一个字符
空格重复了两次,继续下一个
然后到达h,是第一个不重复的字符,停止迭代并返回该字符
public class CharFinder {public char findFirstNonRepeatingChar(String str){Map<Character,Integer> map = new HashMap<>();for(var ch:str.toCharArray()){//如果哈希表有字符则获取该字符的值并计数,否则置为0var count = map.containsKey(ch) ? map.get(ch):0;map.put(ch,count+1);}System.out.println(map);return 0;}
}
CharFinder cf = new CharFinder();
cf.findFirstNonRepeatingChar("a happy pig");
show
有趣的是,这些键和字符串中的字符顺序不同,a是我们输入的第一个字符,我们也希望看到哈希表输出第一个字符为a,这完全是因为哈希表中哈希函数的映射,所以项不是按顺序添加到内存中的。
现在我们知道了每一个字符出现的频率,需要将输入的字符串再次进行迭代,在哈希表中查找每个字符,如果值为1,则返回该字符
for(var ch:str.toCharArray()){if(map.get(ch)==1)return ch;
}
return Character.MIN_VALUE;
show
找到第一个不重复的字符相关推荐
- java 字符串编程题_Java编程题——在一个字符串中查找第一个非重复的字符
编写一个Java程序来查找一个字符串中第一个非重复的字符,这是在编程测试中很常见的一个问题,因为字符串处理在程序员面试中是一个普遍的话题.面试前最好是准备好一些熟知的编程问题,例如使用递归反转字符串, ...
- 《剑指offer》-- 第一个只出现一次的字符、数组中只出现一次的数字、字符流中第一个不重复的字符、数组中重复的数字
一.第一个只出现一次的字符: 1.题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写 ...
- 【剑指offer-54】20190907/03 字符流中第一个不重复的字符
[剑指offer-54]字符流中第一个不重复的字符 考点:字符串 时间限制:1秒 空间限制:32768K 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符&qu ...
- 找出字符串中第一个不重复的字符
找出字符串中第一个不重复的字符 leetcode原题地址 我的解决方法 将字符串转换成字符数组 使用两层循环遍历,最终根据第二层循环退出时的下标值来判断是否是不重复的字符 我的代码: public i ...
- JZ54---字符流中第一个不重复的字符
题目 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六 ...
- 剑指offer——面试题55:字符流中第一个不重复的字符
剑指offer--面试题55:字符流中第一个不重复的字符 Solution1: 当年第一次做这个题的做法 对此题最大的感想是: 1)区分deque(双端队列)和queue(队列): 2)要熟悉queu ...
- Java找出字符串中第一个不重复的字符
indexOf() 方法有以下四种形式: public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1. public ...
- 《剑指offer》字符流中第一个不重复的字符
题目:请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六 ...
- (剑指Offer)面试题55:字符流中第一个不重复的字符
题目: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前 ...
最新文章
- Fragment 中使用 getLayoutInflater() 的问题
- linux_shell 第一章 变量
- FineUI第七天---文件上传
- Android8.0适配方案
- python四种数值交换方法
- jboss启动之奇葩问题
- nginx 反向代理+ip智能解析
- 宝塔 没有找到站点_宝塔面板正确开启TLS 1.3并删除TLS 1.1
- aaynctask控制多个下载进度_使用 Python 下载的 11 种姿势,一种比一种高级
- Nginx学习总结(8)——Nginx服务器详解
- AngularJS开发指南10:AngularJS依赖注入的详解
- 数独程序求解世界最难数独——JAVA版
- 拉普拉斯方程式 Laplace's equation
- ansys中模态扩展是什么意思_ansys模态分析步骤
- 腾讯云开发者实验室是什么?如何学习其中的153个实验案例?
- 读完这100篇论文 就能成大数据高手
- RobotStudio 机器人的直线运动控制
- openstack学习笔记六 多节点部署之keystone
- 2.5元组tuple
- 程序猿生存指南-60 一晌贪欢
热门文章
- Android程序获取root权限问题的最终解决与分析
- 阿拉的小闹闹智能闹钟另辟蹊径做智能音箱 但未来或许喜忧参半
- 创建HTML时选择哪个版本,初学者用pr的哪个版本?
- vue全家桶系列之网易云音乐(移动版)
- 初级程序员应该了解的Linux命令
- oracle 数据立方_关于在Oracle 数据库存储m³(立方米)
- 《Windows编程零基础学》__0
- 亚马逊跨界女性内衣市场能靠谱么?
- 006.创业者如何提升自己的格局
- 【开发日志】2022.10.06 Unity自制小游戏《飞龙射击》全过程详解