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 ...
随机推荐
- GYM 101933K(二项式反演、排列组合)
方法一 设\(f_i\)为最多使用\(i\)种颜色的涂色方案,\(g_i\)为恰好只使用\(i\)种颜色的涂色方案.可知此题答案为\(g_k\). 根据排列组合的知识不难得到\(f_k = \sum_ ...
- 洛谷 P3676 小清新数据结构题
https://www.luogu.org/problemnew/show/P3676 这题被我当成动态dp去做了,码了4k,搞了一个换根的动态dp #include<cstdio> #i ...
- python之set集合、深浅拷贝
一.基本数据类型补充 1,关于int和str在之前的学习中已经介绍了80%以上了,现在再补充一个字符串的基本操作: li = ['李嘉诚','何炅','海峰','刘嘉玲'] s = "_&q ...
- 关于MySQL索引的一点小见解
索引: 优缺点: 1.用的合理可以提高查询效率 2.建立过多索引会占用物理和数据空间,同时也会降低插入和更新效率 需不需要建立索引: 1.一般表的数据低于2000条就不用建立索引了,超过2000条酌情 ...
- Jquery树形控件 $.fn.zTree.init
https://www.cnblogs.com/jin-/p/4646202.html asp.net 树形控件 $.fn.zTree.init 在网页中通过jquery脚本来构筑树形控件将是一个不错 ...
- 基于TCP协议网络编程
1.TCP/IP是一种可靠的网络协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路: 一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路来进行通信: 2.Java对基 ...
- 如何给数组用fill函数和memset函数给数组赋初值
fill是按照单元来赋值的,所以可以填充一个区间的任意值 #include<iostream> #include<stdio.h> #include<string.h&g ...
- SSIS 抽取excel出错:所请求的 OLE DB 访问接口 Microsoft.ACE.OLEDB.12.0 尚未注册
如果是安装的office2010就要装这个,如果是2007就不用装! http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b ...
- javac 找不到文件 的可能原因
初学Java还不太明白,竟在些简单的事情上栽跟头,分享一下省的麻烦. 当我们配置好JDK和环境变量之后,在命令行下输入javac,说明我们的安装是正确的.
- javaSe-常用的类之Calender
Calendar是java中常用的类,比data类使用更加方便,更能更加强大,好吧多的不用你说了,直接上代码 import java.util.Calendar;//需要引进的包 public cla ...