1's, 0's and wildcards


Se le da una cadena que contiene 0's, 1's y uno o más '?', donde ? es un comodín que puede ser 0 o 1.

Devuelve un array que contiene todas las posibilidades a las que se puede llegar sustituyendo la ? por un valor.

Ejemplos

'101?' -> ['1010', '1011']
 
'1?1?' -> ['1010', '1110', '1011', '1111']

Mi solución

function possibilities(str) {
  let arr = [];
  const stack = [];
  stack.push(str);
  let index;
  while (stack.length) {
    let curr = stack.pop();
    if ((index = curr.indexOf('?')) !== -1) {
      for (let c = 0; c <= 1; c++) {
        curr = curr.substring(0, index) + c + curr.substring(index + 1);
        stack.push(curr);
      }
    } else {
      arr.push(curr);
    }
  }
  return arr;
}