Строка и подстрока JavaScript
Есть две строки. Как понять что одна строка является подстрокой* другой строки.
*Подстрокой считаем если при удалении некоторых символов со второй строки получиться первая. Допустим: "aab" подстрока "abab"
Ответы (2 шт):
Допустим так, разбиваем подстроку на массив, и смотрим совпадения, плюс не забываем менять индекс, чтоб не искать дважды от начала строки
let a = 'Подстрока';
let b = 'строа';
let idx = 0;
isSubstr = b.split('').every( i => {
idx = a.indexOf(i ,idx);
return idx != -1;
})
console.log(isSubstr)
Для решения достаточно проверить, что символы проверяемой подстроки идут в том же порядке в основной строке.
Для решения можно пройтись по основной строке, в случае если символ основной строки совпадает с проверяемым символом перейти к следующему проверяемому символу, иначе пропустить.
В итоге если по окончании цикла указатель на индекс проверяемого символа будет равен длине строки - является подстрокой, иначе не является.
Пример реализации:
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));