利用Java实现求字符串中出现次数最多的字符及次数

发布时间:2020-11-12 16:57:24

来源:亿速云

阅读:108

作者:Leah

这篇文章将为大家详细讲解有关利用Java实现求字符串中出现次数最多的字符及次数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

此题的解题思路如下:

引入TreeSet:通过集合快速找到所有出现过的字符串

引入ArrayList:为了快速排序,再通过StringBuffer生成排序后的字符串

通过String的indexOf方法和lastIndexOf方法来计算每个字符串出现的次数最大值

使用HashMap存储出现多的字符串和次数

代码如下:

import java.util.ArrayList;

import java.util.Collections;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.TreeSet;

public class SortTest {

public static void main(String[] args) {

String input = "httpblogcsdnnetouyangpeng";

new SortTest().doString(input);

}

public void doString(String input) {

/**

* 第一步:

* 使用TreeSet快速找到所有出现的字符串

* 将输入的字符串按升序排列

*/

//将String转换为字符数组

char[] chars=input.toCharArray();

ArrayList lists=new ArrayList();

//TreeSet是一个有序集合,TreeSet中的元素将按照升序排列

//通过TreeSet的不重复性,快速找到所有出现的字符串

TreeSet set=new TreeSet();

for (int i = 0; i < chars.length; i++) {

lists.add(String.valueOf(chars[i]));

set.add(String.valueOf(chars[i]));

}

//set= [a, b, c, d, e, g, h, l, n, o, p, s, t, u, y]

System.out.println("set= "+set);

//排序

Collections.sort(lists);

//lists= [a, b, c, d, e, e, g, g, g, h, l, n, n, n, n, o, o, p, p, s, t, t, t, u, y]

System.out.println("lists= "+lists);

//将排序好的字符数组转换为StringBuffer

StringBuffer sb=new StringBuffer();

for (int i = 0; i < lists.size(); i++) {

sb.append(lists.get(i));

}

input=sb.toString();

//input= abcdeeggghlnnnnooppstttuy

System.out.println("input= "+input);

/**

* 第二步: 找出出现相同的字符并记录出现多少次

*/

//最多重复出现多少次

int max=0;

//重复出现的字符

String maxString="";

/*//重复出现的字符列表

ArrayList maxList=new ArrayList();*/

//用来保存出现最多的字符串和次数

HashMap hm=new HashMap();

//将出现过的字符遍历

Iterator its=set.iterator();

while (its.hasNext()) {

String os=its.next();

//字符出现在排序后input中的第一次位置

int begin=input.indexOf(os);

//字符出现在排序后input中的最后一次位置

int end=input.lastIndexOf(os);

//字符出现的次数

int value=end-begin+1;

if (value>=max) {

max=value;

maxString=os;

hm.put(maxString, max);

}

}

for (Map.Entry enties: hm.entrySet()) {

if (enties.getValue()==max) {

System.out.print("重复最多的字母是:"+enties.getKey());

System.out.println("重复最多的次数是:"+enties.getValue());

}

}

}

}

运行结果如下:

set= [a, b, c, d, e, g, h, l, n, o, p, s, t, u, y]

lists= [a, b, c, d, e, e, g, g, g, h, l, n, n, n, n, o, o, p, p, s, t, t, t, u, y]

input= abcdeeggghlnnnnooppstttuy

重复最多的字母是:n重复最多的次数是:4

当有字符串重复的次数相同时,也可以将它们都打印出来。

public static void main(String[] args) {

String input = "abbcccddddeeeeeffffffaaaaabbb";

new SortTest().doString(input);

}

运行结果如下:

set= [a, b, c, d, e, f]

lists= [a, a, a, a, a, a, b, b, b, b, b, c, c, c, d, d, d, d, e, e, e, e, e, f, f, f, f, f, f]

input= aaaaaabbbbbcccddddeeeeeffffff

重复最多的字母是:f重复最多的次数是:6

重复最多的字母是:a重复最多的次数是:6

关于利用Java实现求字符串中出现次数最多的字符及次数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

重复最多字符次数java_利用Java实现求字符串中出现次数最多的字符及次数相关推荐

  1. 字符串排序java_利用Java程序将字符串进行排序与拼接

    1.初始生成字符串的代码程序: package com.map.test; import java.util.ArrayList; import java.util.Collections; impo ...

  2. js利用indexOf方法找到字符串中某个字母出现的位置和次数

    1. 思路 题目: 从字符串"abcdieaopqrsaea"中找到所有a出现的位置及次数 先找到第一个a出现的位置: 判断indexOf的结果,不是-1就继续往后查找 后面查找时 ...

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

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

  4. java相同字符截取第n次_Java 获取字符串中第N次出现的字符位置

    public static int getCharacterPosition(String string){ //这里是获取"/"符号的位置 Matcher slashMatche ...

  5. Java:判断一个字符串中是否存在另一个字符子串以及判断一个字符串中是否存在指定字符

    Java:判断一个字符串中包含指定字符子串,判断一个字符串中存在指定字符 字符串的contains方法可以判断一个字符串中是否存在另一个字符子串,示例如下 String Str = "Hel ...

  6. C语言编程>第二十三周 ③ 下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序;然后把第三字符插入

    例题:下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序.插入法的基本算法是:先对字符串中的头两个元素进行排序:然后把第三字符插入到前两个字符中,插入后前三个字 ...

  7. 2021-12-27 Java String contains() 方法用于判断字符串中是否包含指定的字符或字符串。用.toLowerCase().contains忽视大小写。

    一.public boolean contains(CharSequence chars) contains() 方法用于判断字符串中是否包含指定的字符或字符串. 二.返回值        如果包含指 ...

  8. LeetCode刷题第8天字符串系列之《378字符串中的第一个唯一字符》

    LeetCode 378字符串中的第一个唯一字符 题目描述 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 提示:你可以假定该字符串只包含小写字母. 示例 输入 ...

  9. 字符串中的第一个唯一字符

    字符串中的第一个唯一字符 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回-1. 示例 s = "leetcode" 返回 0s = "lo ...

最新文章

  1. DeepMind最新发现!神经网络的性能竟然优于神经符号模型
  2. 统计学习方法笔记(一)-k近邻算法原理及python实现
  3. python手机版下载苹果版-Pyto-Python3
  4. 协作通信-af df的matlab仿真,协作通信-AF、DF的MATLAB仿真(解压密码yuema1086)
  5. maven-surefire-plugin 自动化单元测试插件
  6. drawable和values的加载规则
  7. WAP自助建站 我编程之路的启蒙
  8. Spark 机器学习中的线性代数库
  9. c语言定义字符数组数码管,数组数码管
  10. Please review your Gradle project setup in the android/ folde
  11. Ruff自主研发的NB-IoT智能网关获得联通实验室测试通过
  12. ros buntu安装手册_超详细 ROS安装教程
  13. 重写iView中Modal对话框取消和确定按钮
  14. 获取钉钉考勤机的打卡记录并且解析
  15. PowerWeChat 微信SDK 介绍
  16. css动画怎么暂停,纯CSS代码实现动画的暂停与播放
  17. Bootstrap插件(一)——模态框(modal.js)
  18. 把日期横杠转化为斜杠
  19. 移动硬盘提示磁盘结构损坏且无法读取怎么办
  20. Navicat连接腾讯服务器时常见错误

热门文章

  1. 51智能小车超声波避障
  2. 游戏策划全接触之游戏剧本篇-----原创
  3. SVHN门牌号数据集 再生成印刷体数据集
  4. Eclipse 的常用快捷键
  5. 面试官常问的 web前端 问题(四)
  6. 龙芯开始支持主流开发栈: Java, .Net以及NodeJS
  7. uni-app和vue什么关系?
  8. 通过windows电脑给iphone装软件
  9. 2022年中职组网络安全国赛A模块解析第二套
  10. 判断wifi密码是否正确