maximumRemovals = function(s, p, removable) {

  let left = 0;
  let right = removable.length - 1;
  let k = 0;

  while (left <= right) {
    const mid = (left + right) >> 1;
    const hash = new Set(removable.slice(0, mid + 1));

    if (isSubSet(hash, s, p)) {
      k = Math.max(k, mid + 1);
      left = mid + 1;
      continue;
    }

    right = mid - 1;
  }

  return k;
}
Binary Search 
n = length of string, k = length of removable
Time O(log(k)*n) | Space O(1)
@param {string} s
@param {string} p
@param {number[]} removable
@return {number}