constreplace = (i) => { let changed = false; for (let j = 0; j < m; j++) { if (target[i + j] !== "?") changed = true; target = target.substring(0, i + j) + "?" + target.substring(i + j + 1); } return changed; };
let replaced = true; while (replaced) { replaced = false; for (let i = 0; i <= n - m; i++) { if (!visited[i] && canReplace(i)) { visited[i] = true; result.push(i); replace(i); replaced = true; } } }