这个算法是为了找到一个字符串中最长的连续子字符串而设计的。 下面是代码示例:
function longestSubstring(str1, str2) {
let longest = '';
for (let i = 0; i < str1.length; i++) {
for (let j = 0; j < str2.length; j++) {
let k = 0;
while (str1[i + k] && str1[i + k] === str2[j + k]) {
k++;
}
if (k > longest.length) {
longest = str1.slice(i, i + k);
}
}
}
return longest;
}
console.log(longestSubstring('abcdefg', 'abcefgh')); // 'abc'
这个算法的时间复杂度是 O(n^3),因为它有两个嵌套的循环和一个 while 循环。
首先,它使用两个循环遍历字符串中所有的字符。
然后,它将找到相等的字符并增加 k 直到找到最长的相等子字符串。
最后,如果这个子字符串比当前记录的 longest 要长,就更新 longest。
这个算法虽然效率不高,但可以帮助我们了解字符串操作和循环的使用。
下一篇:帮忙排序算法,这是什么分治算法?