Java求字符串中出现次数最多的字符
Java求字符串中出现次数最多的字符
- 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();// 把字符串转为字符数组toCharArray
- Map<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值在原来的基础上加1
- map.put(StrArr[i], map.get(StrArr[i]) + 1);
- else
- map.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和对应的key
- int 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;
- }
- }
- 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();// 获得K
- int maxValue = (int) entry.getValue();// 获得V
- while (iter.hasNext()) {
- entry = (Map.Entry) iter.next();// 第二个entry
- char 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();// 把字符串转为字符数组toCharArray
- 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值在原来的基础上加1
- map.put(StrArr[i], map.get(StrArr[i]) + 1);
- else
- map.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);
- }
- }
- 顶
- 0
- 踩
Java求字符串中出现次数最多的字符的更多相关文章
- 使用 Java 查找字符串中出现次数最多的字符以及出现的次数?
使用 Java 查找字符串中出现次数最多的字符以及出现的次数? import java.util.HashMap; import java.util.Map; public class TestStr ...
- java一个字符串中出现次数最多的字符以及次数
学习了别人的方法,觉得挺巧妙的.就是每次取出字符串的第一个字符,将字符串中与第一个字符相同的字符全部删除掉,然后通过计算删除前后字符串的长度来确定该字符在字符串中出现的次数,最终比较出出现最多次的字符 ...
- JS查找字符串中出现次数最多的字符
本文给大家带来两种js中查找字符串中出现次数最多的字符,在这两种方法中小编推荐使用第二种,对js查找字符串出现次数的相关知识感兴趣的朋友一起看看吧 在一个字符串中,如 'zhaochucichuz ...
- js面试之一个字符串中出现次数最多的字符是?出现几次?
最近在找面试题的时候发现了许多有趣的题目,在这里用随笔记录下~ 关于“一个字符串中出现次数最多的字符...”这种问题在笔试题中出现的频率还是很高的,我自己也找到了几种方法处理 var str = &q ...
- js判断一个字符串中出现次数最多的字符及次数
最近面试总是刷到这个题,然后第一次的话思路很乱,这个是我个人思路 for循环里两个 if 判断还可以优化 var maxLength = 0; var maxStr = ''; var count = ...
- JavaScript判断字符串中出现次数最多的字符,并统计其次数
要求: 输出一个给定字符串``中出现次数最多的字符,并统计其次数. 实现思路: 利用charA()遍历这个字符串 把每个字符都存储给对象,如果对象没有该属性,就先幅值为1,如果存在了就+1 遍历对象, ...
- JS-取出字符串中重复次数最多的字符并输出
/** 取出字符串中重复字数最多的字符 */ var words = 'sdfghjkfastgbyhnvdstyaujskgfdfhlaa'; //创建字符串 var word, //单个字符 le ...
- js常会问的问题:找出字符串中出现次数最多的字符。
一.循环obj let testStr = 'asdasddsfdsfadsfdghdadsdfdgdasd'; function getMax(str) { let obj = {}; for(le ...
- js-查找字符串中出现次数最多的字符
假设有一个字符串,下面让我们一起来查找出现次数最多的字符 var str = 'asdfssaaasasasasaa'; 首先,我们定义一个Object用来存放拆分的字符串,然后遍历字符串. 判断ob ...
随机推荐
- 如何更改Linux yum源?
centos下可以通过yum很方便快捷的安装所需的软件和库,如果yum的源不好,安装速度会非常慢,centos默认官方源似乎都是国外的,所以速度无法保证,我一直使用163的源,感觉速度不错.下面就说说 ...
- 好吧,不说闲言碎语,不抱怨,好好工作,好好学习,多总结。记录一下昨天做vuejs的心得
1.做了两个bat文件,一个是直接定位到vuejs项目并且运行,另一个就是打包 run.bat d:cd wwwcd vuecd dtbpmcnpm run devpause build.bat cd ...
- 第一篇Active Directory疑难解答概述(2)
从故障诊断的角度来看,无论用户对象存在于哪个Active Directory域中,Exchange都需要访问此数据.这意味着所有包含启用Exchange的对象的域必须对其运行Setup / Prepa ...
- Web端 页面跳转 页面传值
要把 Default.aspx 页面 TextBox1中的值 传值到 Default.aspx Label上去 C#服务端跳转页面 Response 响应请求对象 Redi ...
- VR/AR软件—Mirra测试(截至2017/11/13),使AR/VR创作更加便捷
Mirra(截至2017/11/13)https://www.mirra.co/ 1.主要特点: 目前仅支持VR,不支持AR 在浏览器(仅支持chrome,firefox)上进行创作,但目前不能直接在 ...
- 卓越管理的实践技巧(3)推动团队管理的要点 Facilitation Essentials for Managers
Facilitation Essentials for Managers 前文卓越管理的秘密(Behind Closed Doors)最后一部分提到了总结的13条卓越管理的实践技巧并列出了所有实践技巧 ...
- .net代码获取节点以及读取属性
获取配置文件的节点,可以使用System.Configuration.ConfigurationManager.GetSection方法获取指定的节点,以sessionstate节点为例,如果需要获取 ...
- UVA12897 - Decoding Baby Boos
没必要每次都真的修改一遍字母值,用一个标记表示字母最后的值,最后一遍的时候再进行修改 #include<cstdio> #include<cstring> +; char st ...
- VC++:鼠标的使用
长期改变鼠标形状: SetClassLongPtr(GetSafeHwnd(), GCLP_HCURSOR, (LONG)LoadCursor(NULL, IDC_WAIT));//这个是x64下可以 ...
- QT5:介绍
一.简介 QT是一个跨平台的C++开发库,主要用来开发图形用户界面(Graphical User Interface,GUI) QT除了可以绘制漂亮的界面(包括控件/布局/交互),还可以多线程/访问数 ...