//获取最长回文字符串
function getLongStr(str) {
var len = str.length,arr = [], maxStartIndex = 0, maxLength = 1;
for (var i = 0; i < len; i++) {
arr[i] = []
}
for (var j = 1; j < len; j++) {
for (var i = 0; i < j; i++) {
if (str[i] === str[j] && (j - i <= 2 || arr[i + 1][j - 1])) {
arr[i][j] = true
if (j + 1 - i > maxLength) {
maxStartIndex = i;
maxLength = j + 1 - i;
}
}
}
}
return str.substr(maxStartIndex, maxLength);
}
console.log(getLongStr("qqabaqw"));
每个阶段的值arr[i][j],依赖于上一阶段arr[i + 1][j - 1]。
而遍历又是从小到大的,之前的阶段已经全部标记完成。
所以判断是否是回文,只需判断当前2个数是否相等,以及上一阶段arr[i + 1][j - 1]是否为true。