function findLongestCommonStr(s1, s2) { var commonStr = '', L1 = s1.length, L2 = s2.length; // 比較s1,s2的長度,看誰長誰短
var shortStr = L1>L2 ? s2 : s1; var longStr = L1>L2 ? s1 : s2; // 短的字符串的長度
var strLen = shortStr.length; // 遍歷短的字符串,從大到小遞減
for (let j = strLen; j > 0; j--) { // 不同的長度有總共有i個可能,從做到右遍歷
for (let i = 0; i <= strLen - j; i++) { // 截取出短字符串的部分字符串
commonStr = shortStr.substr(i, j); // 為了便於觀測運行的過程,打印看一下會直觀很多
console.log('commonStr:',commonStr,'i:',i,'j:',j); // 放在長字符串里看看有沒有匹配的,如果有直接返回
if (longStr.indexOf(commonStr) >= 0) return commonStr } } // 沒有的話返回空字符串
return '' } console.log(findLongestCommonStr("qwer--", "qtrrwqw-")); //qw
// 下面的打印的結果,函數執行的過程,i是從哪里開始截取,j是截取的長度 // commonStr: qwer-- i: 0 j: 6 // commonStr: qwer- i: 0 j: 5 // commonStr: wer-- i: 1 j: 5 // commonStr: qwer i: 0 j: 4 // commonStr: wer- i: 1 j: 4 // commonStr: er-- i: 2 j: 4 // commonStr: qwe i: 0 j: 3 // commonStr: wer i: 1 j: 3 // commonStr: er- i: 2 j: 3 // commonStr: r-- i: 3 j: 3 // commonStr: qw i: 0 j: 2