读取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"));
}{f=4, g=1, d=3, e=1, r=1, a=6}
[解决办法]
看见人家贴代码了,就不附上自己的了。
一般软件方面男人做开发,女生做测试。
其实测试感觉最大的好处就是稳定,不用到处跑,也不用每日每夜的加班,男生一般可以克服这两点,所以男生一般做开发。当然,如果你也能做到这两点,也可以的,男女生智力方面的区别很小的,可以忽略。
测试个人感觉最大的缺点就是涨工资涨的慢,当然,如果能做到白盒测试,那收入也是很客观的。
[解决办法]
你运行一下
char c='b' //c为 26个字母的任意一个
System.out.println(c-'a');
应该就能明白了
[解决办法]
看来热心的人还是很多的,我简单说下原题的意图吧:
完整原题是:“编写完整程序,对code.txt文件进行分析,找出其中出现次数最多的3种字母并输出显示。已知该文件全部由大写英文字母构成。语言不限,可续写背面;如遗忘语句,可只写伪代码,但最多给5分。”
这里其实为了照顾使用C++等语言的,已经尽量简化了要求:为了避免单词处理复杂度,常规是进行词频统计,这里特意改成字频;为了避免需要使用Map之类的数据结构,这里特意说全都只有大写字母。
考点其实就几个:
1、文件操作;
2、循环处理字母频度,用数组或Map都可以;
3、输出前三,这个比只输出最大略微提升点点难度。
如果这个题目完全,做不出来,客观地说动手能力的基础是偏薄弱的。