读取txt文件找出出现最多的几个字母
读取文件有按字符读取放入字符数组,再从数组中找出出现频率最多的m个字符,
也可以BufferedReader按行读取到String,再从字符串中找出出现频率最多的m个字符。
菜鸟求解答!求代码!
[解决办法]
public static Map<Character, Integer> freq(String input){
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"));
}
应该就能明白了
[解决办法]
看来热心的人还是很多的,我简单说下原题的意图吧:
完整原题是:“编写完整程序,对code.txt文件进行分析,找出其中出现次数最多的3种字母并输出显示。已知该文件全部由大写英文字母构成。语言不限,可续写背面;如遗忘语句,可只写伪代码,但最多给5分。”
这里其实为了照顾使用C++等语言的,已经尽量简化了要求:为了避免单词处理复杂度,常规是进行词频统计,这里特意改成字频;为了避免需要使用Map之类的数据结构,这里特意说全都只有大写字母。
考点其实就几个:
1、文件操作;
2、循环处理字母频度,用数组或Map都可以;
3、输出前三,这个比只输出最大略微提升点点难度。
如果这个题目完全,做不出来,客观地说动手能力的基础是偏薄弱的。