Подстрока

— извлекает символы между двумя индексами (позициями) из строки и возвращает подстроку.

var theString = "abc",
  allSubstrings = [];

getAllSubstrings(theString);

function getAllSubstrings(str) {
  for (let i = 0; i < str.length; i++) {
    for (let j = i + 1; j <= str.length; j++) {
      allSubstrings.push(str.substring(i, j));
    }
  }
}

console.log(allSubstrings);
Войти в полноэкранный режим

Выйти из полноэкранного режима

[ ‘a’, ‘ab’, ‘abc’, ‘b’, ‘bc’, ‘c’ ] — Обратите внимание, что «ac» не является подстрокой.


Подмножество

-Подмножество НЕ МОЖЕТ поддерживать относительный порядок элементов и может или не может быть непрерывной частью массива. Для набора размера n у нас может быть всего (2 ^ n) подмножеств.

var subsets = function (str) {
  let index = 0;
  let subset = [];
  let current = "";
  findSubset(index, str, subset, current);
  return subset;
};

const findSubset = (index, str, subset, current) => {
  if (index === str?.length) {
    subset.push(current);
    return;
  }

  findSubset(index + 1, str, subset, current + str.charAt(index));
  findSubset(index + 1, str, subset, current);
};

console.log(subsets("abc"));

Войти в полноэкранный режим

Выйти из полноэкранного режима

[ ‘a’, ‘ab’, ‘abc’, ‘b’, ‘bc’, ‘c’ ] — Обратите внимание, что «ac» и «» являются подмножеством