java 433.最小基因突变(#1双端BFS).java
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 433.最小基因突变(#1双端BFS).java相关的知识,希望对你有一定的参考价值。
class Solution {
private static final char[] candidates = new char[] {'A', 'G', 'C', 'T'};
public int minMutation(String start, String end, String[] bank) {
Set<String> bankSet = new HashSet<>(Arrays.asList(bank));
Set<String> frontier = new HashSet<>();
Set<String> frontierEnd = new HashSet<>();
if (!bankSet.contains(end)) {
return -1;
} else {
bankSet.remove(end);
}
frontier.add(start);
frontierEnd.add(end);
int res = 1;
while (!frontier.isEmpty() && !frontierEnd.isEmpty()) {
Set<String> temp = new HashSet<>();
for (String str : frontier) {
char[] s = str.toCharArray();
for (int i = 0; i < s.length; i++) {
for (int j = 0; j < 4; j++) {
char backup = s[i];
if (s[i] != candidates[j]) {
s[i] = candidates[j];
String next = new String(s);
if (frontierEnd.contains(next)) return res;
if (bankSet.contains(next)) {
temp.add(next);
bankSet.remove(next); // visited
}
}
s[i] = backup;
}
}
}
res++;
if (temp.size() < frontierEnd.size()) {
frontier = temp;
} else {
frontier = frontierEnd;
frontierEnd = temp;
}
}
return -1;
}
}
以上是关于java 433.最小基因突变(#1双端BFS).java的主要内容,如果未能解决你的问题,请参考以下文章
java刷题--433最小基因变化
java刷题--433最小基因变化
java刷题--433最小基因变化
java刷题--433最小基因变化
LeetCode 933. 最近的请求次数 / 433. 最小基因变化 / 442. 数组中重复的数据
LeetCode 五月打卡-day07