Skip to content
Algorithm.js | Algorithm in JavaScript
📚 단일 패턴

5. Longest Palindromic Substring

각 인덱스를 중심으로 좌우를 확장하며 홀짝 팰린드롬 길이를 비교해 최장 부분 문자열을 찾는 expand-around-corner 전략 정리

Oct 22, 2025

문제 설명

풀이 아이디어

해결 전략

구현

/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
const N = s.length;
let max = 0;
let maxValue = "";
const expandAroundCorner = (left, right) => {
let max = 0;
let maxValue = [];
while (0 <= left && right < N && s[left] === s[right]) {
if (max < right - left + 1) {
max = right - left + 1;
maxValue = [ left, right ];
}
left -= 1;
right += 1;
}
return [ max, maxValue ];
}
for (let i = 0; i < N; i += 1) {
const [ oddMax, oddMaxValue] = expandAroundCorner(i, i);
if (max < oddMax) [ max, maxValue ] = [ oddMax, oddMaxValue ];
const [evenMax, evenMaxValue ] = expandAroundCorner(i, i + 1);
if (max < evenMax) [ max, maxValue ] = [ evenMax, evenMaxValue ];
}
return maxValue.length > 0 ? s.slice(maxValue[0], maxValue[1] + 1) : "";
};