我试图找到两个字符串之间的最短路径,并返回一个int,其中包含了多少步骤。鉴于我有一个HashMap,其中每个String(键)都有一个包含所有字符串邻居的String[]
(对象)。
这段代码是我掀起的。我刚拿了一个基本的BFS并尝试复制它,但我无法找到进步的方法。
public class Main {
private static HashMap<String, String[]> list;
private static int makePath(String from, string to) {
int path = 0;
PriorityQueue<String> queue = new PriorityQueue<>();
queue.add(from);
while (!queue.isEmpty()) {
String u = queue.poll();
if (u == to) {
return path;
}
else {
for (String r : list.get(u)) {
...
}
return path;
}
}
return 0;
}
}
这只是我的HashMap可能的样子:
Goat, adj[] {Fish, Cow, Chicken}
Cow, adj[] {Pig, Pigeon}
Fish, adj[] {Goat, Bulbasaur, Dolphin, Eagle}
从鱼到牛我需要两个步骤。从鱼到山羊,从山羊到鱼。
所以如果你有任何想法可以随意分享:)
答案 0 :(得分:0)
我正在考虑使用2个队列。我将from
单词排入firstQueue,而firstQueue
不为空,我将执行交替逻辑以将邻居存储在另一个队列中,如果该邻居仍然不等于{{1 }}
如果我提供代码,它会更清楚,
to