题目
给你一个有根节点 root
的二叉树,返回它 最深的叶节点的最近公共祖先 。
回想一下:
- 叶节点 是二叉树中没有子节点的节点
- 树的根节点的 深度 为
0
,如果某一节点的深度为d
,那它的子节点的深度就是d+1
- 如果我们假定
A
是一组节点S
的 最近公共祖先,S
中的每个节点都在以A
为根节点的子树中,且A
的深度达到此条件下可能的最大值。
实现
Hint
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
if (s.length < 2) return s;
let start = 0, maxLength = 1;
// 中心扩展函数
const expandAroundCenter = (left, right) => {
while (left >= 0 && right < s.length && s[left] === s[right]) {
const currentLength = right - left + 1;
if (currentLength > maxLength) {
maxLength = currentLength;
start = left;
}
left--;
right++;
}
};
for (let i = 0; i < s.length; i++) {
expandAroundCenter(i, i); // 奇数长度回文(中心为单个字符)
expandAroundCenter(i, i + 1); // 偶数长度回文(中心为两个字符)
}
return s.slice(start, start + maxLength);
};
// 辅助函数:判断是否为回文(修正版)
var isPalindrome = function(s) {
return s === s.split('').reverse().join('');
};