Напишем функцию с именем twoStrings
, которая будет принимать два аргумента, строки s1
и s2
.
Есть две строки, цель функции — определить, есть ли у них общая подстрока. Подстрока может быть всего одним символом. Если в обеих строках есть хотя бы один общий символ, функция возвращает YES
. Если обе строки не имеют ничего общего, функция возвращает NO
.
Например:
let s1 = "apple";
let s2 = "park";
Жирные символы — общие подстроки a
и p
. Функция вернёт YES
.
Другой пример:
let s1 = "pork";
let s2 = "wait";
Обе строки не имеют ничего общего, поэтому функция вернёт NO
.
Пишем код:
let shortStr;
let longStr;
Определяем две переменные, shortStr
и longStr
. Более длинную строку из аргументов функции присвоим переменной longStr
, а более короткую — переменной shortStr
. Как узнать, какая строка короче или длиннее другой?
if(s1.length < s2.length){
shortStr = s1;
longStr = s2;
} else {
shortStr = s2;
longStr = s1;
}
В операторе if
проверяем, если s1
короче, чем s2
, то s1
присваиваем переменной shortStr
, а s2
достаётся переменной longStr
. Если нет, то — наоборот. Если обе строки имеют одинаковую длину, по умолчанию используется присваивание в блоке else
.
Это нужно для того, чтобы пробежать по самой короткой строке и посмотреть, существует ли какой-нибудь её символ в переменной longStr
. Сэкономим на количество итераций цикла. Это только один из способов, не обязательно самый эффективный.
for(let i = 0; i < shortStr.length; i++){
if(longStr.indexOf(shortStr[i]) !== -1){
return "YES";
}
}
В цикле for
перебираем символы переменной shortStr
и используем метод indexOf()
, чтобы проверить существование символов из shortStr
в строке longStr
. Как было оговорено в начале: обе строки должны иметь общую подстроку, и она может быть всего одним символом. Когда находится первое же совпадение, можно завершать цикл и вернуть YES
.
Если цикл закончится сам, значит функция не нашла общих подстрок и от безысходности вернёт NO
.
Код полностью:
function twoStrings(s1, s2) {
let shortStr;
let longStr;
if(s1.length < s2.length){
shortStr = s1;
longStr = s2;
}else{
shortStr = s2;
longStr = s1;
}
for(let i = 0; i < shortStr.length; i++){
if(longStr.indexOf(shortStr[i]) !== -1){
return 'YES'
}
}
return 'NO'
}