// 关联子串
// 给定两个字符串str1和str2,如果字符串str1中的字符,经过排列组合后的字符串中,只要有一个字符串是str2的子串,则认为str1是str2的关联子串。
function strHas(str1, str2) {
let n = str1.length; // 字符串1的长度
let len = str2.length; // 字符串2的长度
let tmp = str1; // 临时字符串
let index = -1; // 需要输出的当前位置
for (let i = 0; i < len; i++) {
if (!tmp) { // 临时字符串已经1v1地replace完了
index = i - n; // 减去字符串1的长度得到关联子串起始位置
break;
} else if (tmp.indexOf(str2[i]) > -1) { // 关联子串中是否含有当前字符串
tmp = tmp.replace(str2[i], ""); // 含有的话就replace
} else {
tmp = str1; // 如果不含,则返回完整的子串,重新下一步继续循环
}
}
return index;
}
console.log(strHas("abc", "efghicabiii")); // 5
console.log(strHas("abc", "efghicaibii")); // -1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)