问一个anagram的题# JobHunting - 待字闺中
e*n
1 楼
一个文件,每行一个单词,要求编程输出所有的 anagram,比如:
input:
abc
bac
asbd
sadb
output:
[abc, bac]
[asbd, sadb]
写了一个Java的,请帮忙高手帮忙看看有什么可以改进的:
import java.io.FileInputStream;
import java.io.IOException;
import java.util.*;
import java.util.Arrays;
public class FileReadTest {
public static void main(String[] aArgs) throws IOException {
String fileName = aArgs[0];
String word;
String anagram;
Map wTable = new HashMap();
// Read words from file
List text;
Scanner scanner = new Scanner(new FileInputStream(fileName));
try {
while (scanner.hasNextLine()){
word = scanner.nextLine();
char[] content = word.toCharArray();
java.util.Arrays.sort(content);
anagram = new String(content);
if(wTable.containsKey(anagram)){
text = (List)wTable.get(anagram);
text.add(word);
//wTable.put(word, text);
}
else{
List newWordList = new ArrayList();
newWordList.add(word);
wTable.put(anagram, newWordList);
}
}
}
finally{
scanner.close();
}
// Print table
Iterator mapIter = wTable.entrySet().iterator();
while(mapIter.hasNext()){
Map.Entry mEntry = (Map.Entry) mapIter.next();
System.out.println(mEntry.getValue());
}
}
}
input:
abc
bac
asbd
sadb
output:
[abc, bac]
[asbd, sadb]
写了一个Java的,请帮忙高手帮忙看看有什么可以改进的:
import java.io.FileInputStream;
import java.io.IOException;
import java.util.*;
import java.util.Arrays;
public class FileReadTest {
public static void main(String[] aArgs) throws IOException {
String fileName = aArgs[0];
String word;
String anagram;
Map wTable = new HashMap();
// Read words from file
List text;
Scanner scanner = new Scanner(new FileInputStream(fileName));
try {
while (scanner.hasNextLine()){
word = scanner.nextLine();
char[] content = word.toCharArray();
java.util.Arrays.sort(content);
anagram = new String(content);
if(wTable.containsKey(anagram)){
text = (List)wTable.get(anagram);
text.add(word);
//wTable.put(word, text);
}
else{
List newWordList = new ArrayList();
newWordList.add(word);
wTable.put(anagram, newWordList);
}
}
}
finally{
scanner.close();
}
// Print table
Iterator mapIter = wTable.entrySet().iterator();
while(mapIter.hasNext()){
Map.Entry mEntry = (Map.Entry) mapIter.next();
System.out.println(mEntry.getValue());
}
}
}