首页 > 代码库 > JAVA 面试题: Find most frequency word in a paragraph
JAVA 面试题: Find most frequency word in a paragraph
My Answer:
package testJava;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class FindMostFrequency {
ArrayList<String> words = new ArrayList<String>();
HashMap<String, Integer> word_frequency = new HashMap<String, Integer>();
HashMap<String, Integer> word_position = new HashMap<String, Integer>();
public static void main(String[] args) {
// TODO Auto-generated method stub
FindMostFrequency find = new FindMostFrequency();
find.readFile("d:/test.txt");
HashMap<String, Integer> result = find.findMostFrequencyWord();
System.out.println(result);
}
public String replacePunc(String str) {
return str.replaceAll("[\\pP]", " ");
}
public String[] convertStr(String str) {
return str.split("\\s+");
}
public void readFile(String filePath) {
File file = new File(filePath);
if (file.exists()) {
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line = null;
int linenum=1;
while ((line = br.readLine()) != null) {
String[] wordList = this.convertStr(this.replacePunc(line));
int count = 0;
String word = null;
for (int i = 0; i < wordList.length; i++) {
word=wordList[i];
if (words.contains(word)) {
count = word_frequency.get(word) + 1;
word_frequency.put(word, count);
} else {
words.add(word);
word_frequency.put(word, 1);
this.word_position.put(word, linenum);
}
}
linenum++;
}
br.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
System.out.println("This file doesn‘t exist!");
}
}
public HashMap<String,Integer> findMostFrequencyWord(){
int max=0;
HashMap<String,Integer> res = new HashMap<String,Integer>();
Iterator<Entry<String, Integer>> it=this.word_frequency.entrySet().iterator();
while(it.hasNext()){
Map.Entry<String, Integer> entry=it.next();
if(entry.getValue()>max){
res = new HashMap<String,Integer>();
res.put(entry.getKey(),this.word_position.get(entry.getKey()));
max=entry.getValue();
}
else if(entry.getValue()==max){
res.put(entry.getKey(),this.word_position.get(entry.getKey()));
}
else{
continue;
}
}
return res;
}
}
JAVA 面试题: Find most frequency word in a paragraph
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。