Skip to content

Commit 60d362f

Browse files
committed
add: solve #220 Valid Palindrome with ts
1 parent 407b10e commit 60d362f

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/**
2+
* ๋ฌธ์ž์—ด์„ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ ๋ฐ ์ˆซ์ž๋งŒ ๋‚จ๊ธฐ๋Š” ๋ณ€ํ™˜ ์œ ํ‹ธ
3+
* - ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n) (์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด์— ๋น„๋ก€)
4+
*
5+
* @param {string} s - ์ •์ œํ•  ๋ฌผ์ž์—ด
6+
* @returns {string} - ์†Œ๋ฌธ์ž ์•ŒํŒŒ๋ฒณ๊ณผ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด
7+
*/
8+
const refinePhrase = (s:string) : string => s.toLowerCase().replace(/[^a-z0-9]/g, '');
9+
10+
11+
/**
12+
* ๋ฌธ์ž์—ด์„ ์ •์ œํ›„ palindrome ์—ฌ๋ถ€ ํ™•์ธ ํ•˜๋Š” ํ•จ์ˆ˜
13+
* - ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n) (๋ฌธ์ž์—ด ์ •์ œ + ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜)
14+
*
15+
* @param {string} s palindrome ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ๋ฌธ์ž์—ด
16+
* @returns {boolean} palindrome ์—ฌ๋ถ€
17+
*/
18+
function isPalindrome(s: string): boolean {
19+
const refined = refinePhrase(s);
20+
21+
// two pointer๋ฅผ ํ™œ์šฉํ•œ palindrome ํ™•์ธ O(n)
22+
let left = 0, right = refined.length - 1;
23+
while (left < right) {
24+
if (refined[left] !== refined[right]) {
25+
return false;
26+
}
27+
left++;
28+
right--;
29+
}
30+
31+
return true;
32+
}

0 commit comments

Comments
ย (0)