e***n 发帖数: 42 | 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());
}
}
} | i**********e 发帖数: 1145 | 2 应该没什么问题,但不是 anagram 的你的程序也会打印。
例如 [abc, bcd]
应该是没有 anagrams 的。 | e***n 发帖数: 42 | 3 试了一下,没有遇到你说的问题
input:
abc
bac
asbd
sadb
bcd
output:
[abc, bac]
[bcd]
[asbd, sadb]
本人初学java,觉得一些数据结构用java编还是挺方便的 |
|