Skip to content

Commit 9ebf035

Browse files
committed
longest-palindromic-substring
1 parent ea2fb75 commit 9ebf035

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* https://leetcode.com/problems/longest-palindromic-substring/submissions/1694755721/
3+
* @param {string} s
4+
* @return {string}
5+
*/
6+
var longestPalindrome = function (s) {
7+
// 결과로 반환할 가장 긴 팰린드롬 초기값
8+
let result = '';
9+
10+
// 팰린드롬의 중심에서 양쪽으로 확장하는 함수
11+
function expandAroundCenter(left, right) {
12+
// 왼쪽이 0 이상, 오른쪽이 문자열 길이 이하이며
13+
// 양쪽 문자가 같으면 계속 확장
14+
while (left >= 0 && right < s.length && s[left] === s[right]) {
15+
left--;
16+
right++;
17+
}
18+
// while문을 빠져나오면 팰린드롬이 아님.
19+
// 현재 찾은 팰린드롬 반환
20+
return s.slice(left + 1, right);
21+
}
22+
23+
// 문자열의 각 문자를 중심으로 확장 시도
24+
for (let i = 0; i < s.length; i++) {
25+
// 홀수 길이 팰린드롬 (중심이 한 글자)
26+
const oddPalindrome = expandAroundCenter(i, i);
27+
// 짝수 길이 팰린드롬 (중심이 두 글자)
28+
const evenPalindrome = expandAroundCenter(i, i + 1);
29+
30+
// 더 긴 팰린드롬 선택
31+
if (oddPalindrome.length > result.length) {
32+
result = oddPalindrome;
33+
}
34+
if (evenPalindrome.length > result.length) {
35+
result = evenPalindrome;
36+
}
37+
}
38+
39+
// 결과 반환
40+
return result;
41+
};

0 commit comments

Comments
 (0)