题目描述:找出一个字符串中出现次数最多的字符,如果有多个出现次数相同的字符,那就找出最先出现的那个字符
思考:

我的第一反应是分三步:

  1. 遍历字符串,统计每个字符出现的次数
  2. 找出最大的次数
  3. 找出最大次数对应的那个字符

这样解决是没有问题的,但是太笨了,遍历了三次。经过思考,发现可以利用map的特性,只需要遍历一次就可以解决问题,贴上代码如下:

/*** 找出一个字符串中出现次数最多的字符,如果有多个出现次数相同的字符,就找出最先出现的那个。*/
public class FirstChar {/*** 使用倒序查找的方式找到首先出现的次数最多的那个字符* @param str* @return*/private static char searchFirstChar(String str) {// 定义一个map,根据键值的唯一性,使用字符串中的字符作为键,出现的次数作为值Map<Character, Integer> map = new HashMap<>();// 将字符串转化为字符数组char[] ch = str.toCharArray();// 定义一个最大次数,初始值为0int max = 0;// 定义出现次数最多的字符,初始值为第一个字符char ret = ch[0];// 倒叙遍历字符串数组for (int i = ch.length - 1; i >= 0; i--) {// 如果map中存在该字符,则将map中的value加1,也就是字符出现的次数加1,// 否则就设置当前字符出现的次数为1if (map.containsKey(ch[i])) {// 将该字符出现的次数加1map.put(ch[i], map.get(ch[i]) + 1);// 如果该字符出现的次数大于max,则将max设置为当前字符出现的次数,// 并将出现次数最多的字符置为当前字符if (map.get(ch[i]) >= max) {max = map.get(ch[i]);ret = ch[i];}} else {map.put(ch[i], 1);}}return ret;}public static void main(String[] args) {// 测试字符String str = "a1a2a3bbbcccdddeeefffddda23112211";char c = FirstChar.searchFirstChar(str);System.out.println(c);}
}

执行结果:

【算法】大搜车——找出一个字符串中出现次数最多的字符,如果有多个出现次数相同的字符,那就找出最先出现的那个字符相关推荐

  1. c与指针 从一个字符串中提取子串_python实现找出来一个字符串中最长不重复子串...

    刚结束的一个笔试题,很简单,不多说简单贴一下具体的实现: #!usr/bin/env python#encoding:utf-8 '''__Author__:沂水寒城功能:找出来一个字符串中最长不重复 ...

  2. 找出一个字符串中出现次数最多的字_海量数据中找出前k大数(topk问题)

    在海量数据中找出出现频率最好的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为top K问题. 针对top K类问题,通常比较好的方案是分治+Trie树/hash+小顶堆(就是上面提到 ...

  3. 找出一个字符串中出现次数最多的字_487,重构字符串

    想了解更多数据结构以及算法题,可以关注微信公众号"数据结构和算法",每天一题为你精彩解答. 问题描述 给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同. 若可行 ...

  4. python字符串面试题:找出一个字符串中第一个字母和最后一个字符是第一次重复,中间没有重复且最长的子串...

    1.给出任意一个字符串,打印一个最长子串字符串及其长度,如果有相同长度的子字符串,都要一起打印出来,该子字符串满足以下条件, 第一个字母和最后一个字符是第一次重复 这个子字符串的中间字母没有重复 这个 ...

  5. 找出一个字符串中出现次数最多的字_Day34:第一个只出现一次的字符

    剑指Offer_编程题--第一个只出现一次的字符 题目描述: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置,如果没有则返回-1 ...

  6. 好文:「大搜车」凭什么获得阿里如此青睐?

    2019独角兽企业重金招聘Python工程师标准>>> 在车联网之后,阿里巴巴又加紧了汽车流通领域的布局. 「新商业NEO100」是36氪品牌全面向新商业升级而制作的一个特别栏目. ...

  7. 大搜车:“薄利多销”是否适合二手车市场?

    产品是为解决需求而存在的:据中国汽车流通协会数据,2012年中国二手车交易量共479.14万辆,交易金额达2636.26亿元,二手车交易量不及新车三分之一,相对于美国这类成熟二手车市场的国家,交易额仅 ...

  8. python找最长的字符串_Python简单实现查找一个字符串中最长不重复子串的方法

    本文实例讲述了Python简单实现查找一个字符串中最长不重复子串的方法.分享给大家供大家参考,具体如下: 刚结束的一个笔试题,很简单,不多说简单贴一下具体的实现: #!usr/bin/env pyth ...

  9. 最长不重复字符串python_Python简单实现查找一个字符串中最长不重复子串的方法...

    本文实例讲述了Python简单实现查找一个字符串中最长不重复子串的方法.,具体如下: 刚结束的一个笔试题,很简单,不多说简单贴一下具体的实现: #!usr/bin/env python #encodi ...

最新文章

  1. html最小化窗口,[转载]js实现窗口(支持拉伸,拖拽,最大化,最小化,滚动
  2. 索引初识一 MySql
  3. win10家庭版通过命令gpedit.msc打不开组策略的解决方法
  4. 如何用Linux的命令正确识别cpu的个数和核数
  5. 【数据竞赛】从0梳理1场时间序列赛事!
  6. H2Database 转义符
  7. 数据仓库中捕获变化数据(CDC,Changed Data Capture)的四种手法
  8. 为什么Angular的路由执行离不开router-outlet标签
  9. 如何用代码填充S/4HANA销售订单行项目的数量字段
  10. 基于Spark的机器学习实践 (三) - 实战环境搭建
  11. c语言中执行一次的函数once,iOS只执行一次的方法
  12. 【数据结构与算法】获取链表中值算法
  13. 深入理解【缺页中断】及FIFO、LRU、OPT这三种置换算法
  14. 【毕业设计】 python小游戏设计 - 走迷宫游戏设计与实现
  15. Bryntum Web JavaScript Components Crack
  16. for循环练习题-编写程序,根据输入行数,输出金字塔图案
  17. IP地址配置错误网络无法连接怎么解决Win10?
  18. QT QDataEdit
  19. 阿里云上海云栖大会上宣布多款核心云计算产品降价 最高降幅达50%
  20. 一点排位就安全异常退出_鸡肉的嘌呤高吗?高尿酸血症和痛风人群可以吃吗?怎么吃才安全呢...

热门文章

  1. 多功能视频处理器——MS1824
  2. JustAuthPlus(JAP)喜提 Gitee GVP(最有价值项目)称号!
  3. 联想微型计算机c325参数,超低功耗 联想C325一体电脑报价3299
  4. js倒计时结束后播放音乐html5,倒计时到HTML5视频结束(Countdown to the end of the HTML5 video)...
  5. win11输入法无法切换到中文
  6. 【保姆级教程】hadoop 3.x 环境配置——入门篇
  7. 解决vscode里的vue文件代码变白色
  8. Win10高分屏软件界面字体模糊问题解决
  9. 最全的反诈宣传文案都在这里了!
  10. 通过短信猫发送手机短信