实现一个回文算法
总结了一下自己实现的回文算法。
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;
}
代码演示
输出结果:
无结果