Minimum Genetic Mutation LeetCode solution in JavaScript

1
/**
2
* @param {string} start
3
* @param {string} end
4
* @param {string[]} bank
5
* @return {number}
6
*/
7
var minMutation = function (start, end, bank) {
8
if (start.length != end.length || !contains(end, bank)) {
9
return -1;
10
}
11
return bfs(start, end, bank);
12
};
13
function contains(end, bank) {
14
for (const x of bank) {
15
if (x == end) {
16
return true;
17
}
18
}
19
return false;
20
}
21
function convertPossible(a, b) {
22
if (a.length != b.length) return false;
23
let count = 0;
24
for (let i = 0; i < a.length; i++) {
25
if (a[i] != b[i]) {
26
count++;
27
}
28
}
29
return count == 1;
30
}
31
function bfs(start, end, bank) {
32
let count = 0;
33
let q = [];
34
let set = new Set();
35
q.push(start);
36

37
while (q.length > 0) {
38
let size = q.length;
39

40
for (let i = 0; i < size; i++) {
41
let curr = q.shift();
42

43
if (curr == end) {
44
return count;
45
}
46
bank.forEach((x) => {
47
if (convertPossible(curr, x) && !set.has(x)) {
48
q.push(x);
49
set.add(x);
50
}
51
});
52
}
53
count++;
54
}
55
return -1;
56
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0