要求编写代码实现:寻找一个字符串中出现次数最多的字符以及出现的次数。

解法一:用删除法实现 (挺巧妙的一种)

public class FindTheMostAppearChar {public static void main(String[] args) {deleteMethodToAchieve();}/*** 用删除法实现 (挺巧妙的)* 解题思路:每次取出字符串的第一个字符,将字符串中与第一个字符相同的字符全部删掉,* 然后通过计算删除前后字符串的长度来确定该字符在字符串出现的次数,最终比较出出现次数最多的字符*/public static void deleteMethodToAchieve() {Scanner scanner = new Scanner(System.in);String string = scanner.nextLine().trim();scanner.close();int max_length = 0;String max_str = "";while (string.length() > 0) {String firstChar = string.substring(0,1);int length = string.length();string = string.replaceAll(firstChar, "");if (length - string.length() > max_length) {max_length = length - string.length();max_str = firstChar;}}System.out.println("出现次数最多的字符是:" + max_str + ",出现的次数:" + max_length);}
}
复制代码

解法二:用查找法实现

public class FindTheMostAppearChar {public static void main(String[] args) {hashMapMethodToAchieve();}/*** 用字符数组查找法实现* 解题思路:先将字符串拆分成字符数组,然后转存到 HashMap 集合中,* 该集合的key为字符串中出现的字符,value为对应字符串出现的次数。* 最后只需要在HashMap集合中找到Value值最大的key即可。*/public static void hashMapMethodToAchieve() {Scanner scanner = new Scanner(System.in);String string = scanner.nextLine().trim();scanner.close();// 将字符串转换成字符数组char[] arr = string.toCharArray();Map<Character, Integer> map = new HashMap<>();// key为出现的字符,value 为该字符出现的次数,将字符数组转存在 HashMap 中if (arr != null && arr.length > 0) {for (int i = 0; i < arr.length; i++) {if (map.get(arr[i]) != null) {// 若不为空,说明已经存在相同的字符,则 value 值在原来的基础上加1map.put(arr[i],map.get(arr[i]) + 1);} else {map.put(arr[i], 1);}}}// 查找出出现次数最多的字符以及出现的次数也有多种写法FindTheMostCharByMap(map); // 查找写法一:用 Iterator 遍历 Map 来查找// FindTheMostCharByMapEntry(map); // 查找写法二:用 Map.Entry 提高效率// FindTheMostCharByForLoop(map, arr); // 查找写法三:直接用 for 循环来遍历查找}// 查找写法一:用 Iterator 遍历 Map 来查找public statice void FindTheMostCharByMap(Map<Character, Integer> map) {Set<Character> keys = map.keySet(); // 获取所有的keyIterator iterator = keys.iterator(); // 实例化 IteratorCharacter maxKey = (Character) iterator.next(); //定义第一个为最大的value和对应的keyint maxValue = map.get(maxKey);while (iterator.hasNext()) {Character temp = (Character) iterator.next();if (maxValue < map.get(temp)) {maxKey = temp;maxValue = map.get(temp);}}System.out.println("出现次数最多的字符是:" + maxKey + ", 出现的次数:" + maxValue);}// 查找写法二:用 Map.Entry 提高效率public static void FindTheMostCharByMapEntry(Map<Character, Integer> map) {Iterator iterator = map.entrySet().iterator();Map.Entry entry = (Map.Entry) iterator.next();char maxKey = (char) entry.getKey(); // 获取keyint maxValue = (int) entry.getValue(); // 获取valuewhile (iterator.hasNext()) {entry = (Map.Entry) iterator.next();char tempKey = (char) entry.getKey();int tempValue = (int) entry.getValue();if (maxValue < tempValue) {maxKey = tempKey;maxValue = tempValue;}}System.out.println("出现次数最多的字符是:" + maxKey + ", 出现的次数:" + maxValue);}// 查找写法三:直接用 for 循环来遍历查找public static void FindTheMostCharByForLoop(Map<Character, Integer> map, char[] arr) {int maxValue = map.get(arr[0]);char maxKey = ' ';for (int i = 0; i < arr.length; i++) {if (maxValue < map.get(arr[i])) {maxValue = map.get(arr[i]);maxKey = arr[i];}}System.out.println("出现次数最多的字符是:" + maxKey + ", 出现的次数:" + maxValue);}}
复制代码

解法三:用排序法实现

public class FindTheMostAppearChar {public static void main(String[] args) {sortMethodToAchieve();}/*** 用排序法实现* 解题思路:先将字符串转换成字符数组,然后对字符数组进行排序,* 统计每个字符重复出现的次数,最后比较得出出现次数最多的字符以及出现次数*/public static void sortMethodToAchieve() {Scanner scanner = new Scanner(System.in);String string = scanner.nextLine().trim();scanner.close();char[] arr = string.toCharArray();Arrays.sort(arr); // 对数组进行排序char maxValue = 'a'; // 记录出现次数最多的元素int maxCount = 0; // 记录出现次数int count = 1;for (int i = 0; i < arr.length - 1; i++) {if (arr[i] == arr[i+1]) {count++;}if (arr[i] != arr[i+1]) {if (count > maxCount) {maxCount = count;maxValue = arr[i];}count = 1;}}System.out.println("出现次数最多的字符是:" + maxValue + ", 出现的次数:" + maxCount);}
}
复制代码

转载于:https://juejin.im/post/5d0b355bf265da1b8466eb56

面试题:寻找一个字符串中出现次数最多的字符以及出现的次数相关推荐

  1. Python--找出字符串中出现次数最多的字符及其出现的次数

    方法一: 1.循环遍历列表或字符串,如果字符在字典中则值加1,如果不在则创建(key,value) 2.找到字典中,最大的value值 3.根据最大的value值,找对应的key值,打印出出现次数最多 ...

  2. 判断一个字符串中出现次数最多的字符,统计这个次数

    var str = 'abaasdffggghhjjkkgfddsssss3444343';// 1.将字符串转换成数组var newArr = str.split("");// ...

  3. 一个字符串中到底能有多少个字符? 我竟然算错了!

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 来源:rrd.me/fpv95 依照Java的文档, Ja ...

  4. python实现统计一个字符串中出现的字母和该字母出现的次数

    思路:建一个含有所有字母的字典,然后遍历字符串,每遇见一个字母就将其加入字典中以其为键值的列表中.然后统计就好,代码如下 import string str_c="dasdasdasds&q ...

  5. 寻找一个字符串中的最长不重复子串的长度

    2019独角兽企业重金招聘Python工程师标准>>> 算法使用两个下标来分别代表不重复子串的第一个字符的前一个字符和最后一个字符,记为i和j flag为长度,n为比较的参数 < ...

  6. 寻找一个字符串中所有重复字符的索引

    import redef get_index(word, sentence):# 获取相同字符的索引值index_list = [match.start() for match in re.findi ...

  7. 删除一个字符串中指定位置上的字符

    题目描述 输入一串字符,输入要删除元素的位置,输出删除后的字符串 输入 一行字符串 输出 删除后的字符 样例输入 abcde 3 样例输出 abde #include<stdio.h> i ...

  8. Java求字符串中出现次数最多的字符

    Java求字符串中出现次数最多的字符  [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51933611      Java ...

  9. JS-取出字符串中重复次数最多的字符并输出

    /**取出字符串中重复字数最多的字符 */ var words = 'sdfghjkfastgbyhnvdstyaujskgfdfhlaa'; //创建字符串 var word, //单个字符leng ...

最新文章

  1. matlab simulink 直线一级倒立摆控制方法研究 状态观测
  2. php+nginx环境配置注意事项
  3. 计划备份mysql数据库
  4. html:(20):使用下拉框进行多选和使用提交按钮提交
  5. Thymeleaf Error resolving template [index],template might not exist or might not be accessible
  6. 微信小程序之 ----API接口
  7. 最简单的Officescan快速卸载
  8. 基于opencv,C++实现中值滤波器
  9. CSS实验案例01QQ会员页面导航
  10. 时序预测 | MATLAB实现DBN深度置信网络时间序列预测
  11. U盘插入电脑识别不出来,如何解决?
  12. Python的图像处理库Pillow
  13. 史玉柱:从巨人到大闲人
  14. vue路由SPA的介绍
  15. vpa函数python_python 调用百度接口 做人脸识别
  16. mySQL中col是什么意思_MySQL中count(*)、count(1)和count(col)的区别汇总
  17. MobRecon: Mobile-Friendly Hand Mesh Reconstruction from Monocular Image阅读笔记
  18. 20230103编译ToyBrick的TB-RK3588X的Andorid12的LOG02
  19. Java虚拟机是如何识别目标方法的?
  20. 修改注册表使任务栏全透明

热门文章

  1. 使用unity3d制作像素鸟游戏
  2. 大象的三个武器——浅谈印象笔记的“笔记本分类”、“搜索”、“标签”的应用...
  3. 仿优信二手车品牌选择demo
  4. 基于requests库和lxml库爬取优信二手车
  5. Linux系统运维之keepalived的工作原理和裂脑
  6. 超级App成为Gartner预测的战略技术,软件降本增效是否能进一步提速?
  7. 使用css制作永动的动画
  8. UVa 12627 - Erratic Expansion
  9. 广大网友们快来帮帮弱小的我把!!!!Eclipse做web项目删除用户,如果第一次用户id错误,则再输入就会出现404错误( 已解决!!!!)
  10. Vue main.js各种写法和含义