Skip to content

Commit e7bd771

Browse files
committed
add solution : 5. Longest Palindromic Substring
1 parent 9e2b07d commit e7bd771

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
*
3+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ• :
4+
* - ํŒฐ๋ฆฐ๋“œ๋กฌ์€ ์ขŒ์šฐ ๋Œ€์นญ ๋ฌธ์ž์—ด์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.
5+
* - ๋ฌธ์ž์—ด ์ค‘์‹ฌ์ด 1๊ฐœ(ํ™€์ˆ˜)์ผ ๋•Œ์™€ 2๊ฐœ(์ง์ˆ˜)์ผ ๋•Œ ๊ณ ๋ คํ•ด์„œ ํŒฐ๋ฆฐ๋“œ๋กฌ์„ ํ™•์žฅํ•˜๋ฉฐ ๊ธด ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•œ๋‹ค.
6+
*
7+
* ์‹œ๊ฐ„๋ณต์žก๋„ : O(n^2)
8+
* - n = s ๋ฌธ์ž์—ด ๊ธธ์ด
9+
* - ๋™์ผ ๋ฌธ์ž์ธ ๊ฒฝ์šฐ for๋ฌธ๊ณผ while๋ฌธ์—์„œ 2๋ฒˆ ์ˆœํšŒ ๋ฐœ์ƒ O(n)
10+
*
11+
* ๊ณต๊ฐ„๋ณต์žก๋„ : O(1)
12+
* - ๊ณ ์ •๋œ ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉ
13+
*
14+
*/
15+
function longestPalindrome(s: string): string {
16+
let result = "";
17+
18+
function expandFromCenter(start: number, end: number) {
19+
while (start >= 0 && end < s.length && s[start] === s[end]) {
20+
start--;
21+
end++;
22+
}
23+
return s.slice(start + 1, end);
24+
}
25+
26+
for (let i = 0; i < s.length; i++) {
27+
const oddPalindrome = expandFromCenter(i, i);
28+
if (oddPalindrome.length > result.length) result = oddPalindrome;
29+
30+
const evenPalindrome = expandFromCenter(i, i + 1);
31+
if (evenPalindrome.length > result.length) result = evenPalindrome;
32+
}
33+
34+
return result;
35+
}

0 commit comments

Comments
ย (0)