avatar
问一个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());
}
}

}
avatar
i*e
2
应该没什么问题,但不是 anagram 的你的程序也会打印。
例如 [abc, bcd]
应该是没有 anagrams 的。
avatar
e*n
3
试了一下,没有遇到你说的问题
input:
abc
bac
asbd
sadb
bcd
output:
[abc, bac]
[bcd]
[asbd, sadb]
本人初学java,觉得一些数据结构用java编还是挺方便的
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。