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 ...
随机推荐
- spring 3.2.7 applicationContext.xml
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.s ...
- list remove元素
public class TestList { public static void main(String[] args) { List<Integer> list = new Link ...
- STM32之VCP1/VCAP2引脚的处理
需要根据仔细根据手册来决定这两个引脚是直接接地还是电容下拉到地 转载:STM32的Vcap的问题及解决---原来经验也害人http://bbs.eeworld.com.cn/thread-499497 ...
- D. Mike and distribution 首先学习了一个玄学的东西
http://codeforces.com/contest/798/problem/D D. Mike and distribution time limit per test 2 seconds m ...
- (转)sudo配置文件/etc/sudoers详解及实战用法
sudo配置文件/etc/sudoers详解及实战用法 原文:http://blog.csdn.net/field_yang/article/details/51547804 一.sudo执行命令的流 ...
- 宝塔面板安装的mysql5.5用命令行kill -9后启动不了
1.查看mysql版本方法一:status;方法二:select version(); 2.Mysql启动.停止.重启常用命令a.启动方式1.使用 service 启动:[root@localhost ...
- 【Unity3D】实现太阳系
实践要求:写一个程序,实现一个完整的太阳系,其他星球围绕太阳的转速必须不一样,并且不再一个法平面内. 法平面是指过空间曲线的切点,且与切线垂直的平面.要求不在一个法平面内,则在保证所有行星以及太阳在一 ...
- Yii2 的快速配置 api 服务 yii2-fast-api
yii2-fast-api yii2-fast-api是一个Yii2框架的扩展,用于配置完善Yii2,以实现api的快速开发. 此扩展默认的场景是APP的后端接口开发,因此偏向于实用主义,并未完全采用 ...
- sql问题:备份集中的数据库备份与现有的 '办公系统' 数据库不同
解决方法:把备份的数据库从原有的地方先分离,再拷贝一份,在需要还原的服务器上附加到数据库中,在根数据库上点击“还原数据库”,选择需要还原的数据库名称,以及还原的bak备份文件,在选择“选项”,勾选上“ ...
- javaSe-反射1
package com.java.chap07.sec01; public class Student { private String name; private Integer age; //创建 ...