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

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<Integer> al=new ArrayList<Integer>();
Map<String,Integer> map=new HashMap<String,Integer>(); String tempStr = str;// 临时存储字符串
String[] stringArray = str.split("");// 把字符串切成一个个字符 // 无重复地存储字符串中出现的字符
Set<String> set = new HashSet<String>();
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<countLength; i++){
// 若map值与最大值相同,则输出
if (map.get(s) == max) {
System.out.println(s + ":" + max);// Q: 这样循环结果会输出多次,如何只输出一次??
}
}
} } public static void main(String[] args) {
findFrequencyWord("abab bc");
}
}

原文:http://www.2cto.com/kf/201205/133219.html,此处略有改动。

Java 求字符串中出现频率最高字符的更多相关文章

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

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

  2. 三种java 去掉字符串中的重复字符函数

    三种java 去掉字符串中的重复字符函数 public static void main(string[] args) { system.out.println(removerepeatedchar( ...

  3. 使用Java判断字符串中的中文字符数量

    Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法: 1. char[] c = str.toCharArray(); for ...

  4. Java:求字符串中邻接的数字为一个整体

    public static void main(String[] args) { String strNumbers = "0123456789";//用来进行判断数字的 Syst ...

  5. java 删除字符串中的特定字符

    /** * Delete any character in a given String. * @param inString the original String * @param charsTo ...

  6. Java-Runoob-高级教程-实例-字符串:03. Java 实例 - 删除字符串中的一个字符

    ylbtech-Java-Runoob-高级教程-实例-字符串:03. Java 实例 - 删除字符串中的一个字符 1.返回顶部 1. Java 实例 - 删除字符串中的一个字符  Java 实例 以 ...

  7. 使用 Java 查找字符串中出现次数最多的字符以及出现的次数?

    使用 Java 查找字符串中出现次数最多的字符以及出现的次数? import java.util.HashMap; import java.util.Map; public class TestStr ...

  8. Java:判断字符串中包含某字符的个数

    Java:判断字符串中包含某字符的个数 JAVA中查询一个词在内容中出现的次数: public int getCount(String str,String key){ if(str == null ...

  9. 1231: 删除字符串中指定的字符(Java)

    WUSTOJ 1231: 删除字符串中指定的字符 题目 原题链接 Description 明天就要英语考试了,小明明正在挑灯夜战背单词.小明明发现单词很难背,背一个忘一个.经过仔细研究,小明明发现单词 ...

随机推荐

  1. .NET开发框架(二)-框架功能简述

    若视频播放不了,请点击 这里查看 本框架为响应式SPA框架,支持PC与手机端的屏幕自适应.手机展示效果视频在文章末尾查看. 框架入口地址:http://letyouknow.net/ 1.框架登录界面 ...

  2. 《深入理解ES6》读书笔记

    文章目录 第一章 块级绑定 1. var 声明与变量提升 2. let 与 var 的区别 第二章 字符串与正则表达式 1.字符串扩展 1.1 includes().startsWith() .end ...

  3. jQuery入门——注册事件

    下面举例介绍注册事件的几种方法: 以光棒效果为例 1.bind注册: <!DOCTYPE html> <html> <head> <meta charset= ...

  4. 使用 Mybatis 框架 jdbc 方式批量写入 SQL Server,报错 com.microsoft.sqlserver.jdbc.SQLServerException 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数,最多应为2100

    这个错是sqlserver抛出来的. 进过验证,上述错误中的2100为插入的总字段数. 比如下面这种插入方式,values后面的一个括号里的字段为30个,那么后面最多只能加70条,即这种批量插入方式一 ...

  5. Java连接MYSQL进行操作(增,删,改)

    连接数据库,并用表格输出数据 创建insex.jsp <table border="1" width="80%" align='center'> & ...

  6. JS高级程序设计第3章--精简版

    前言:纯手打!!!按照自己思路重写!!!这次是二刷了,想暑假做一次完整的笔记,但用本子来写笔记的话太贵了,可能哪天还丢了..所以还是博客好== 第三章:基本概念(语法.数据类型.流控制语句.函数) 3 ...

  7. mysql复制那点事 - Seconds_behind_Master参数调查笔记

    目录 mysql复制那点事 - Seconds_behind_Master参数调查笔记 0. 参考文献 1. 问题背景 2. 调查结论 3. 调查与分析过程 3.1 轮转binlog时的运行逻辑 3. ...

  8. django基础知识之HTML转义:

    HTML转义 Django对字符串进行自动HTML转义,如在模板中输出如下值: 视图代码: def index(request): return render(request, 'temtest/in ...

  9. java中几个常见的问题

    1.正确使用equals方法 Object的equals方法容易抛出空指针异常,应使用常量或确定有值的对象来调用equals方法 例如: //不能使用一个值为null的引用类型变量来调用非静态方法,否 ...

  10. 嗨,你真的懂this吗?

    this关键字是JavaScript中最复杂的机制之一,是一个特别的关键字,被自动定义在所有函数的作用域中,但是相信很多JvaScript开发者并不是非常清楚它究竟指向的是什么.听说你很懂this,是 ...