Строка и подстрока JavaScript

Есть две строки. Как понять что одна строка является подстрокой* другой строки.

*Подстрокой считаем если при удалении некоторых символов со второй строки получиться первая. Допустим: "aab" подстрока "abab"


Ответы (2 шт):

Автор решения: Alexandr

Допустим так, разбиваем подстроку на массив, и смотрим совпадения, плюс не забываем менять индекс, чтоб не искать дважды от начала строки

let a = 'Подстрока';
let b = 'строа';
let idx = 0;
isSubstr = b.split('').every( i => {
  idx = a.indexOf(i ,idx);
  return idx != -1;
})
console.log(isSubstr)

→ Ссылка
Автор решения: Grundy

Для решения достаточно проверить, что символы проверяемой подстроки идут в том же порядке в основной строке.

Для решения можно пройтись по основной строке, в случае если символ основной строки совпадает с проверяемым символом перейти к следующему проверяемому символу, иначе пропустить.

В итоге если по окончании цикла указатель на индекс проверяемого символа будет равен длине строки - является подстрокой, иначе не является.

Пример реализации:

var a = "aab";
var b = "abab";

function isSubstr(str, sub) {
  for (var i = 0, j = 0; i < str.length && j < sub.length; i++) {
    if (str[i] === sub[j]) {
      j++;
    }
  }

  return j === sub.length;
}

console.log(isSubstr(b, a));

→ Ссылка