实现一个回文算法
总结了一下自己实现的回文算法。
function palindrome(str: string): Array<[number, number]> { const palindromeIndex: Array<[number, number]> = []; const strLength: number = str.length; if (strLength < 3) { return palindromeIndex; } for (let i: number = 1; i < strLength - 1; i++) { // 奇数 let startIndex: number | null = null, endIndex: number | null = null; for (let k: number = i - 1, m: number = i + 1; k >= 0 && m < strLength; k--, m++) { if (str[k] === str[m]) { [startIndex, endIndex] = [k, m]; } else { break; } } if (startIndex !== null && endIndex !== null) { palindromeIndex.push([startIndex, endIndex]); } // 偶数 [startIndex, endIndex] = [null, null]; for (let p: number = i, t: number = i + 1; p >= 0 && t < strLength; p--, t++) { if (str[p] === str[t]) { [startIndex, endIndex] = [p, t]; } else { break; } } if (startIndex !== null && endIndex !== null) { palindromeIndex.push([startIndex, endIndex]); } } return palindromeIndex; }
代码演示
输出结果:
无结果