找到第一个不重复的字符

例如:
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

找到第一个不重复的字符相关推荐

  1. java 字符串编程题_Java编程题——在一个字符串中查找第一个非重复的字符

    编写一个Java程序来查找一个字符串中第一个非重复的字符,这是在编程测试中很常见的一个问题,因为字符串处理在程序员面试中是一个普遍的话题.面试前最好是准备好一些熟知的编程问题,例如使用递归反转字符串, ...

  2. 《剑指offer》-- 第一个只出现一次的字符、数组中只出现一次的数字、字符流中第一个不重复的字符、数组中重复的数字

    一.第一个只出现一次的字符: 1.题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写 ...

  3. 【剑指offer-54】20190907/03 字符流中第一个不重复的字符

    [剑指offer-54]字符流中第一个不重复的字符 考点:字符串 时间限制:1秒 空间限制:32768K 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符&qu ...

  4. 找出字符串中第一个不重复的字符

    找出字符串中第一个不重复的字符 leetcode原题地址 我的解决方法 将字符串转换成字符数组 使用两层循环遍历,最终根据第二层循环退出时的下标值来判断是否是不重复的字符 我的代码: public i ...

  5. JZ54---字符流中第一个不重复的字符

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

  6. 剑指offer——面试题55:字符流中第一个不重复的字符

    剑指offer--面试题55:字符流中第一个不重复的字符 Solution1: 当年第一次做这个题的做法 对此题最大的感想是: 1)区分deque(双端队列)和queue(队列): 2)要熟悉queu ...

  7. Java找出字符串中第一个不重复的字符

    indexOf() 方法有以下四种形式: public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1. public ...

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

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

  9. (剑指Offer)面试题55:字符流中第一个不重复的字符

    题目: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前 ...

最新文章

  1. Fragment 中使用 getLayoutInflater() 的问题
  2. linux_shell 第一章 变量
  3. FineUI第七天---文件上传
  4. Android8.0适配方案
  5. python四种数值交换方法
  6. jboss启动之奇葩问题
  7. nginx 反向代理+ip智能解析
  8. 宝塔 没有找到站点_宝塔面板正确开启TLS 1.3并删除TLS 1.1
  9. aaynctask控制多个下载进度_使用 Python 下载的 11 种姿势,一种比一种高级
  10. Nginx学习总结(8)——Nginx服务器详解
  11. AngularJS开发指南10:AngularJS依赖注入的详解
  12. 数独程序求解世界最难数独——JAVA版
  13. 拉普拉斯方程式 Laplace's equation
  14. ansys中模态扩展是什么意思_ansys模态分析步骤
  15. 腾讯云开发者实验室是什么?如何学习其中的153个实验案例?
  16. 读完这100篇论文 就能成大数据高手
  17. RobotStudio 机器人的直线运动控制
  18. openstack学习笔记六 多节点部署之keystone
  19. 2.5元组tuple
  20. 程序猿生存指南-60 一晌贪欢

热门文章

  1. Android程序获取root权限问题的最终解决与分析
  2. 阿拉的小闹闹智能闹钟另辟蹊径做智能音箱 但未来或许喜忧参半
  3. 创建HTML时选择哪个版本,初学者用pr的哪个版本?
  4. vue全家桶系列之网易云音乐(移动版)
  5. 初级程序员应该了解的Linux命令
  6. oracle 数据立方_关于在Oracle 数据库存储m³(立方米)
  7. 《Windows编程零基础学》__0
  8. 亚马逊跨界女性内衣市场能靠谱么?
  9. 006.创业者如何提升自己的格局
  10. 【开发日志】2022.10.06 Unity自制小游戏《飞龙射击》全过程详解