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

 【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/51933611
     Java求字符串中出现次数最多的字符,如String Str = "aaabbcddddee";那么输出:d 4 ;若String Str = "aaabbcddddeexxxxxx";那么输出:x 6
    【思路】:首先将字符串拆分为字符数组,然后转存到HashMap集合中,该集合的key为字符串中出现的字符,value对应该字符出现的次数。最后只需要在HashMap集合中找到Value值最大的key即可。实现代码如下(PS:输出形式若有变化,自己修改哈)
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class JavaTest {public static void main(String[] args) throws Exception {String Str = "AAbbcccaaaa";char[] StrArr = Str.toCharArray();// 把字符串转为字符数组toCharArrayMap<Character, Integer> map = MapFunction(StrArr);char ch = FindMapMaxValue(map);}/*** MapFunction:实现将字符数组转存到Map中, 其中,Map中的key为出现的字符,value对应该字符出现的次数* @param StrArr  StrArr字符数组,输入前必须先将字符串转为字符数组* @return map 集合中,key为出现的字符(Character),value对应该字符出现的次数(Integer)*/public static Map<Character, Integer> MapFunction(char[] StrArr) {Map<Character, Integer> map = new HashMap<Character, Integer>();if (!(StrArr == null || StrArr.length == 0))// 先判断字符数组是否为空for (int i = 0; i < StrArr.length; i++)if (null != map.get(StrArr[i]))// 若不为空,说明已经存在相同字符,则Value值在原来的基础上加1map.put(StrArr[i], map.get(StrArr[i]) + 1);elsemap.put(StrArr[i], 1);return map;}/*** FindMapMaxValue 差找map中Value的最大值maxValue,类似于选择排序寻找最大值的过程:* 先任取一个Value值定义为最大值,然后与之比较* @param map 输入Map集合,该集合key为出现的字符(Character),value对应该字符出现的次数(Integer)* @return maxKey 返回出现次数最多的字符*/public static Character FindMapMaxValue(Map<Character, Integer> map) {Set<Character> keys = map.keySet();// 获得所有key值Iterator keys_Itera = keys.iterator();// 实例化Iterator// keys_Itera.next():依次获得key值// map.get(key):获得对应的value值Character maxKey = (Character) keys_Itera.next();// 定义第一个为最大value和对应的keyint maxValue = map.get(maxKey);while (keys_Itera.hasNext()) {Character temp = (Character) keys_Itera.next();if (maxValue < map.get(temp)) {maxKey = temp;maxValue = map.get(temp);}}System.out.println("出现次数最多的字符:" + maxKey + " 出现次数:" + maxValue);return maxKey;}
}
上面的FindMapMaxValue方法,还可以使用Map.Entry提高效率,进一步优化为:
    public static char FindMapMaxValue(Map<Character, Integer> map) {Iterator iter = map.entrySet().iterator();Map.Entry entry = (Map.Entry) iter.next();// 将第一个entry定义为最大次数的char maxKey = (char) entry.getKey();// 获得Kint maxValue = (int) entry.getValue();// 获得Vwhile (iter.hasNext()) {entry = (Map.Entry) iter.next();// 第二个entrychar tempK = (char) entry.getKey();int tempV = (int) entry.getValue();if (maxValue < tempV) {maxKey = tempK;maxValue = tempV;}}System.out.println("出现次数最多的字符:" + maxKey + " 出现次数:" + maxValue);return maxKey;}

类似的还可以这样:

import java.util.HashMap;
import java.util.Map;
public class JavaTest {public static void main(String[] args) throws Exception {String Str = "aaabbcddddee";char[] StrArr = Str.toCharArray();// 把字符串转为字符数组toCharArrayMap<Character, Integer> map = new HashMap<Character, Integer>();if (!(StrArr == null || StrArr.length == 0))// 先判断字符数组是否为空for (int i = 0; i < StrArr.length; i++) if (null != map.get(StrArr[i]))// 若不为空,说明已经存在相同字符,则Value值在原来的基础上加1map.put(StrArr[i], map.get(StrArr[i]) + 1);elsemap.put(StrArr[i], 1);// 找map中Value的最大值maxValue,类似于选择排序,寻找最大值的过程:// 先任取一个Value值定义为最大值,然后与之比较int maxValue = map.get(StrArr[0]);char ch = ' ';for (int j = 0; j < StrArr.length; j++)if (maxValue < map.get(StrArr[j])) {maxValue = map.get(StrArr[j]);ch = StrArr[j];}System.out.println("现次数最多的字符:" + ch + " 出现次数:" + maxValue);}
}

Java求字符串中出现次数最多的字符相关推荐

  1. 重复最多字符次数java_利用Java实现求字符串中出现次数最多的字符及次数

    利用Java实现求字符串中出现次数最多的字符及次数 发布时间:2020-11-12 16:57:24 来源:亿速云 阅读:108 作者:Leah 这篇文章将为大家详细讲解有关利用Java实现求字符串中 ...

  2. 找一个字符串中出现次数最多的字符

    第一种: str = 'asdasddsfdsfadsfdghdadsdfdgdasd'str = str.split('');console.log(str);var newStr = {};// ...

  3. python 字符串去重且相同字符最多出现2次_Python实现计算字符串中出现次数最多的字符示例...

    本文实例讲述了Python实现计算字符串中出现次数最多的字符.分享给大家供大家参考,具体如下: 1. 看了网上挺多写的方法都没达到我所需要的效果,我干脆自己写了个方法共享给大家 ee = 'aa111 ...

  4. JavaScript学习(七十七)—统计字符串中出现次数最多的字符和每个字符出现的次数

    JavaScript学习(七十七)-统计字符串中出现次数最多的字符和每个字符出现的次数

  5. 面试题:查询字符串中出现次数最多的字符以及出现次数

    查询字符串中出现次数最多的字符以及出现次数 最优解: // 查询字符串出现最多的次数var randomStr = "sssfgtdaddddddddadadadadadddddfssddf ...

  6. 面试题:寻找一个字符串中出现次数最多的字符以及出现的次数

    要求编写代码实现:寻找一个字符串中出现次数最多的字符以及出现的次数. 解法一:用删除法实现 (挺巧妙的一种) public class FindTheMostAppearChar {public st ...

  7. #特辑# 统计字符串中出现次数最多的字符是哪个,并且出现了出现了几次 。

    方式一 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8&q ...

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

    题目描述:找出一个字符串中出现次数最多的字符,如果有多个出现次数相同的字符,那就找出最先出现的那个字符 思考: 我的第一反应是分三步: 遍历字符串,统计每个字符出现的次数 找出最大的次数 找出最大次数 ...

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

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

最新文章

  1. Unity游戏开发大师班
  2. JVM方法区内存分配
  3. 子元素的margin-top影响父元素原因和解决办法
  4. ASP.NET Core 中文文档 第三章 原理(1)应用程序启动
  5. jenkins linux编译c,【Linux】【Jenkins】代码编译和执行过程中的问题汇总
  6. 信息学奥赛课课通VS中学生计算机,数学奥赛VS信息学奥赛 孩子们该如何选择
  7. java signal handler_JAVA优雅停机的实现
  8. stm32h7高速通信_【STM32H7教程】第75章 STM32H7的SPI总线应用之驱动DAC8501(双路输出,16bit分辨率,0-5V)...
  9. jquery实现全选功能
  10. sqlserver xml 操作:3、对不确定结构、属性的xml进行处理
  11. 计算机word中如何左右缩进字符,【2人回答】Word文档怎么左右缩进两个字符?-3D溜溜网...
  12. allure企业级定制报告
  13. 人工智能基础——全局搜索方法
  14. PYQT安装及初始化
  15. 第2部分 字符串算法(提高篇)--第2章 KMP算法1469:似乎在梦中见过的样子
  16. 3dmax插件导出x格式异常
  17. XTransfer 1号技术员工卡乐:从普通程序猿到技术专家
  18. opencv-python使用cvui编写界面
  19. python自动化开发实战实战2:用列表与文件创建购物系统
  20. 11对战平台在wayos进程分线下下载地图慢的解决

热门文章

  1. 【Xamarin挖墙脚系列:使用Xamarin进行Hybrid应用开发】
  2. React 之 高阶组件的理解
  3. char* 和 char * 思考
  4. linux 安装jdk(install jdk)
  5. scrapy 动态IP、随机UA、验证码
  6. python自动华 (七)
  7. Bootstrap入门(二十九)JS插件6:弹出框
  8. C++11 现代C++风格的新元素(转)
  9. Confluence 6 使用 Apache 和 mod_proxy 添加 SSL和其他
  10. JEPLUS表格组件数据平铺——JEPLUS软件快速开发平台