constoneDiff = (a, b) => { let cnt = 0; for (let i = 0; i < a.length; i++) { if (a[i] !== b[i]) cnt++; if (cnt > 1) break; } if (cnt === 1) returntrue; elsereturnfalse; };
functionsolution(begin, target, words) { if (!words.includes(target)) return0;
constoneDiff = (a, b) => { let cnt = 0; for (let i = 0; i < a.length; i++) { if (a[i] !== b[i]) cnt++; if (cnt > 1) break; } if (cnt === 1) returntrue; elsereturnfalse; };
functionsolution(begin, target, words) { if (!words.includes(target)) return0;
let queue = [begin]; let level = 0;
while (1) { level++; const next = newSet([]); while (queue.length > 0) { const out = queue.shift(); const temp = words.filter(word =>oneDiff(out, word)); if (temp.includes(target)) return level; else { words = words.filter(word => !oneDiff(out, word)); next.add(...temp); } } queue = [...next]; } }