读取文件有按字符读取放入字符数组,再从数组中找出出现频率最多的m个字符,
也可以BufferedReader按行读取到String,再从字符串中找出出现频率最多的m个字符。
菜鸟求解答!求代码!
也可以BufferedReader按行读取到String,再从字符串中找出出现频率最多的m个字符。
菜鸟求解答!求代码!
解决方案 »
- 关于sql的模糊查询的一个奇怪的问题(oracle)
- JTable中如何设置列的行数,及每个单元格宽与长
- 关于log4j的问题
- 求助!spring代理 webservice客户端的问题,困扰我好几天了
- 我一直在学编程但是英语没过四级.以后找工作是不是非常的难啊???
- linux下quartz与swt的冲突及解决方案
- 关于lucene中文字符问题
- 请教hibernate如何在**.hbm.xml中配置自增长主键?
- 用WEB SERVICE怎么传递LIST?在线等啊.
- JDBC-ODBC
- JDK1.7-LinkedList循环链表优化
- struts1.1,hibernate3.0和SQL Server 2000数据库的驱动包
list:保存所有字符
set: 获取不重复字符
map:key:不重复字符,value:通过对list与set遍历获取每个字符的个数
然后从map中获取最多的字符..
HashMap<Character, Integer> fq = new HashMap<>();
while(input.length() > 0){
char c = input.charAt(0);
int l1 = input.length();
input = input.replace(String.valueOf(c),"");
int l2 = input.length();
fq.put(c,l1-l2);
}
return Collections.unmodifiableMap(fq);
} public static void main(final java.lang.String[] args) {
System.out.println(freq("adadaefadfgarfaf"));
}
{f=4, g=1, d=3, e=1, r=1, a=6}
import java.util.Iterator;
/**
* @author Administrator
* 2011-10-20 9:25
*/
//哈希表计出现次数
public class Has {
// 统计单词出现的次数
public static String StatList(String str) {
StringBuffer sb = new StringBuffer();
HashMap<String ,Integer> has = new HashMap<String ,Integer> (); // 打开一个哈希表
String[] slist = str.split("\\b");
for (int i = 0; i < slist.length; i++) {
if (!has.containsKey(slist[i])) { // 若尚无此单词
has.put(slist[i], 1);
} else {//如果有,就在将次数加1
has.put(slist[i],has.get(slist[i])+1 );
}
}
//遍历map
Iterator iterator = has.keySet().iterator();
while(iterator.hasNext()){
String word = (String) iterator.next();
sb.append("单词:").append(word).append(" 次数").append(has.get(word)).append("\n");
}
return sb.toString();
}
public static void main(String[] args) {
String s = new String("You are the mananger of an office supplies company. A colleague has received a letter compaining about an order for office furniture. She has left the letter for you to answer and has written some notes on it.");
System.out.println(StatList(s));
}
}
不好意思,我想问一下 ary[c-'a'] = ary[c-'a']+1; 实现的什么逻辑啊?
你运行一下char c='b' //c为 26个字母的任意一个
System.out.println(c-'a');应该就能明白了
1、文件操作;
2、循环处理字母频度,用数组或Map都可以;
3、输出前三,这个比只输出最大略微提升点点难度。如果这个题目完全,做不出来,客观地说动手能力的基础是偏薄弱的。