Skip to content

Commit 1022935

Browse files
authored
[ PS ] : Longest Palindromic Substring
1 parent 9452a52 commit 1022935

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* @param {string} s
3+
* @return {string}
4+
*/
5+
const longestPalindrome = function(s) {
6+
let substr = '';
7+
8+
for (let i = 0; i < s.length; i++) {
9+
const oddStr = getCurrentLongestPalindrome(i, i); // s[i] ๊ธฐ์ค€ ์–‘์˜†์œผ๋กœ ๋ป—์–ด๋‚˜๊ฐ => length๋Š” ํ•ญ์ƒ ํ™€์ˆ˜
10+
const evenStr = getCurrentLongestPalindrome(i, i+1); // s[i] + s[i+1] ๊ธฐ์ค€ ์–‘์˜†์œผ๋กœ => length๋Š” ํ•ญ์ƒ ์ง์ˆ˜
11+
12+
if (substr.length < oddStr.length) substr = oddStr;
13+
if (substr.length < evenStr.length) substr = evenStr;
14+
}
15+
16+
// ๊ธฐ์ค€ ๋ฌธ์ž์—ด์„ ํฌํ•จํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๊ธด ํŒฐ๋ฆฐ๋“œ๋กฌ์„ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ (๊ธฐ์ค€ ๋ฌธ์ž์—ด: s.slice(l, r + 1))
17+
const getCurrentLongestPalindrome = function (l, r) {
18+
while (0 <= l && r < s.length && s[l] === s[r]) {
19+
l--;
20+
r++;
21+
}
22+
23+
return s.slice(l+1, r);
24+
}
25+
26+
return substr;
27+
};
28+
29+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(n^2)
30+
// ๊ณต๊ฐ„๋ณต์žก๋„: O(s) (s: substr.length)

0 commit comments

Comments
ย (0)