博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 求字符串中出现频率最高字符
阅读量:4319 次
发布时间:2019-06-06

本文共 1890 字,大约阅读时间需要 6 分钟。

前段时间接触的这个题目,大体理解了,还有些小地方仍待进一步品味,暂且记下。

import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; /*  * 查找字符串中出现频率最高的字符 *  * 主要思路:先将字符串存入set集合,以保证没有重复字符 * 然后取出set集合中的每一个字符,并用String的indexOf()方法进行索引 * 若索引不为-1,则说明该字符存在,记录其在字符串中的索引位置 * 并将记录字符出现次数的变量++,再从当前索引位置+1处开始进行索引, * 直到索引值为-1,则退出循环,至此每个字符出现的频率都已记录 * 接下来采用map进行字符与字符所对应的频率进行存储 * 再将map的values形成一个ArrayList集合 * 将计算得到的最大频率与map中的值进行比较 * 若相等,则其为最大频率的字符 */ public class HighFrequencyWord {          public static void findFrequencyWord(String str) {         Collection
al=new ArrayList
(); Map
map=new HashMap
(); String tempStr = str;// 临时存储字符串 String[] stringArray = str.split("");// 把字符串切成一个个字符 // 无重复地存储字符串中出现的字符 Set
set = new HashSet
(); int stringLength = stringArray.length; for (int i = 0; i < stringLength; i++) { set.add(stringArray[i]); } // 移掉set中的一个空字符 (哪一个?什么意思??) set.remove(""); System.out.println(set);// 这里输出为 [ , a, b, c] int count = 0; boolean flag = true; for (String s : set) { while (flag) { if (tempStr.indexOf(s) != -1) { // 若索引存在 int index = tempStr.indexOf(s);// 记录字符的当前位置 tempStr = tempStr.substring(index + 1);// 往后继续查询 count++; } else { flag = false;// 如果索引不存在,赋值false退出循环 } } flag = true;// 为了执行下一循环 map.put(s,count);// 记录字符与其对应频率,并存放在map中 // 初始化结果,为下次循环做准备 count = 0; tempStr = str; } // 将map的value转为一个List al= map.values(); // 再转为数组 Integer[] stringCount =al.toArray(new Integer[]{}); Arrays.sort(stringCount);// 按升序排序 int countLength=stringCount.length; int max=stringCount[countLength-1];// 得到数组最大值(从小到大排序后最后一个即为出现频率最高的值) for(String s: set) { for(int i=0; i

 

原文:,此处略有改动。

转载于:https://www.cnblogs.com/jaxer/p/4593917.html

你可能感兴趣的文章
批量插入数据@Insert
查看>>
push和commit的区别
查看>>
设计模式学习9 Decorator
查看>>
加入博客园
查看>>
linux 管道符号 | ,以及&& ||等等特殊符号笔记
查看>>
ORACLE 中rownum和row_number()的使用区别(可指定取sql结果集的第几个数据)
查看>>
eclipse 迁移项目 乱码
查看>>
[js高手之路] es6系列教程 - 对象功能扩展详解
查看>>
java算法-选择排序
查看>>
python把字典写入excel之一例
查看>>
ROS配置C++14环境
查看>>
实现简单的登录界面
查看>>
项目管理有感之需求调研
查看>>
安装xampp之后如何建立远程登录用户并修改登录方式和密码
查看>>
linux下部署jenkins
查看>>
atitit.软件guibuttonand面板---os区-----软链接,快捷方式
查看>>
38平衡二叉树
查看>>
2替换空格
查看>>
如何修改settings.xml的镜像
查看>>
用IDEA/WebStrom 提交本地项目到Git/码云等
查看>>