【算法】大搜车——找出一个字符串中出现次数最多的字符,如果有多个出现次数相同的字符,那就找出最先出现的那个字符
题目描述:找出一个字符串中出现次数最多的字符,如果有多个出现次数相同的字符,那就找出最先出现的那个字符
思考:
我的第一反应是分三步:
- 遍历字符串,统计每个字符出现的次数
- 找出最大的次数
- 找出最大次数对应的那个字符
这样解决是没有问题的,但是太笨了,遍历了三次。经过思考,发现可以利用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);}
}
执行结果:
【算法】大搜车——找出一个字符串中出现次数最多的字符,如果有多个出现次数相同的字符,那就找出最先出现的那个字符相关推荐
- c与指针 从一个字符串中提取子串_python实现找出来一个字符串中最长不重复子串...
刚结束的一个笔试题,很简单,不多说简单贴一下具体的实现: #!usr/bin/env python#encoding:utf-8 '''__Author__:沂水寒城功能:找出来一个字符串中最长不重复 ...
- 找出一个字符串中出现次数最多的字_海量数据中找出前k大数(topk问题)
在海量数据中找出出现频率最好的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为top K问题. 针对top K类问题,通常比较好的方案是分治+Trie树/hash+小顶堆(就是上面提到 ...
- 找出一个字符串中出现次数最多的字_487,重构字符串
想了解更多数据结构以及算法题,可以关注微信公众号"数据结构和算法",每天一题为你精彩解答. 问题描述 给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同. 若可行 ...
- python字符串面试题:找出一个字符串中第一个字母和最后一个字符是第一次重复,中间没有重复且最长的子串...
1.给出任意一个字符串,打印一个最长子串字符串及其长度,如果有相同长度的子字符串,都要一起打印出来,该子字符串满足以下条件, 第一个字母和最后一个字符是第一次重复 这个子字符串的中间字母没有重复 这个 ...
- 找出一个字符串中出现次数最多的字_Day34:第一个只出现一次的字符
剑指Offer_编程题--第一个只出现一次的字符 题目描述: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置,如果没有则返回-1 ...
- 好文:「大搜车」凭什么获得阿里如此青睐?
2019独角兽企业重金招聘Python工程师标准>>> 在车联网之后,阿里巴巴又加紧了汽车流通领域的布局. 「新商业NEO100」是36氪品牌全面向新商业升级而制作的一个特别栏目. ...
- 大搜车:“薄利多销”是否适合二手车市场?
产品是为解决需求而存在的:据中国汽车流通协会数据,2012年中国二手车交易量共479.14万辆,交易金额达2636.26亿元,二手车交易量不及新车三分之一,相对于美国这类成熟二手车市场的国家,交易额仅 ...
- python找最长的字符串_Python简单实现查找一个字符串中最长不重复子串的方法
本文实例讲述了Python简单实现查找一个字符串中最长不重复子串的方法.分享给大家供大家参考,具体如下: 刚结束的一个笔试题,很简单,不多说简单贴一下具体的实现: #!usr/bin/env pyth ...
- 最长不重复字符串python_Python简单实现查找一个字符串中最长不重复子串的方法...
本文实例讲述了Python简单实现查找一个字符串中最长不重复子串的方法.,具体如下: 刚结束的一个笔试题,很简单,不多说简单贴一下具体的实现: #!usr/bin/env python #encodi ...
最新文章
- html最小化窗口,[转载]js实现窗口(支持拉伸,拖拽,最大化,最小化,滚动
- 索引初识一 MySql
- win10家庭版通过命令gpedit.msc打不开组策略的解决方法
- 如何用Linux的命令正确识别cpu的个数和核数
- 【数据竞赛】从0梳理1场时间序列赛事!
- H2Database 转义符
- 数据仓库中捕获变化数据(CDC,Changed Data Capture)的四种手法
- 为什么Angular的路由执行离不开router-outlet标签
- 如何用代码填充S/4HANA销售订单行项目的数量字段
- 基于Spark的机器学习实践 (三) - 实战环境搭建
- c语言中执行一次的函数once,iOS只执行一次的方法
- 【数据结构与算法】获取链表中值算法
- 深入理解【缺页中断】及FIFO、LRU、OPT这三种置换算法
- 【毕业设计】 python小游戏设计 - 走迷宫游戏设计与实现
- Bryntum Web JavaScript Components Crack
- for循环练习题-编写程序,根据输入行数,输出金字塔图案
- IP地址配置错误网络无法连接怎么解决Win10?
- QT QDataEdit
- 阿里云上海云栖大会上宣布多款核心云计算产品降价 最高降幅达50%
- 一点排位就安全异常退出_鸡肉的嘌呤高吗?高尿酸血症和痛风人群可以吃吗?怎么吃才安全呢...
热门文章
- 多功能视频处理器——MS1824
- JustAuthPlus(JAP)喜提 Gitee GVP(最有价值项目)称号!
- 联想微型计算机c325参数,超低功耗 联想C325一体电脑报价3299
- js倒计时结束后播放音乐html5,倒计时到HTML5视频结束(Countdown to the end of the HTML5 video)...
- win11输入法无法切换到中文
- 【保姆级教程】hadoop 3.x 环境配置——入门篇
- 解决vscode里的vue文件代码变白色
- Win10高分屏软件界面字体模糊问题解决
- 最全的反诈宣传文案都在这里了!
- 通过短信猫发送手机短信