我试图找到两个字符串之间的最短路径,并返回一个整数,表示已采取了多少步。鉴于我有一个 HashMap ,其中每个 String(key) 都有一个String[]
(object) 包含所有字符串邻居。
这段代码是我写的。我只是拿了一个基本的 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}
从鱼到牛我需要两个步骤。从鱼到山羊,从山羊到鱼。
因此,如果您有任何想法,请随时分享:)