Skip to content

Commit fe5e3ab

Browse files
committed
longest palindromic substring solution
1 parent fbf174e commit fe5e3ab

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Time Complexity: O(n^2), n: s의 길이
2+
// Space Complexity: O(1)
3+
function longestPalindrome(s: string): string {
4+
const expandAroundCenter = (s: string, left: number, right: number): [number, number] => {
5+
while (left >= 0 && right < s.length && s[left] === s[right]) {
6+
left--;
7+
right++;
8+
}
9+
10+
return [left + 1, right - 1];
11+
};
12+
13+
let longest = "";
14+
for (let i = 0; i < s.length; i++) {
15+
const [s1, e1] = expandAroundCenter(s, i, i);
16+
const [s2, e2] = expandAroundCenter(s, i, i + 1);
17+
18+
const odd = e1 - s1 + 1;
19+
const even = e2 - s2 + 1;
20+
21+
if (longest.length < odd) {
22+
longest = s.slice(s1, e1 + 1);
23+
}
24+
25+
if (longest.length < even) {
26+
longest = s.slice(s2, e2 + 1);
27+
}
28+
}
29+
30+
return longest;
31+
}

0 commit comments

Comments
 (0)