gpt4 book ai didi

java - 我怎样才能使字谜程序代码更快? ( java )

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:57 24 4
gpt4 key购买 nike

我是一个不太有经验的程序员。我写了一个字谜程序,唯一的问题是它不够快。有人告诉我,我的嵌套 for loop是问题所在,但我不知道如何解决它( set1 是一个 HashSet 以及我正在处理的所有单词, map 是一个 LinkedHashMap<String, String> 和 anagram a TreeMap<String, TreeSet<String>> ):

for (String element : set1) {
char[] woord = element.toCharArray(); //alfabetical order of each word
Arrays.sort(woord);
String chartostring = new String(woord);
map.put(element, chartostring); // add each word with its sorted letters
TreeSet<String> order_words = new TreeSet<String>(); //creating list of anagrams
for (String o : map.keySet()) { //for each word
if (map.get(o).equals(chartostring)) { //check if there is a value in map which is equal to the sorted letters
order_words.add(o); //add word to list of anagrams
if (order_words.size() > 1) { //we want anagrams so only print if there are atleast 2 words
anagram.put(chartostring, order_words);
}
}
}
}

有人可以帮帮我吗?非常感谢。

最佳答案

嵌套循环确实很慢,因为您将 map 当作列表来迭代。如果您可以用 HashMap 中的快速查找来替换嵌套循环,那不是很好吗?不幸的是,当您处理 Map<String,String> 时,这不是一个选项。 ,因为多个单词将具有相同的排序表示。这就是为什么您构建了一个从单词到其排序表示的映射,而不是相反。

然而,这意味着您可以构建一个从排序表示到单词列表的映射:

Map<String,List<String>> sortedRepToWords

您可以在进行任何匹配之前在单个循环中构建此 map 。有了这个列表映射,您可以消除嵌套循环,将其替换为从 sortedRepToWords 中查找整个列表。 .

关于java - 我怎样才能使字谜程序代码更快? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39979149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com