Skip to content

Commit 262fd23

Browse files
committed
valid palindrome solution
1 parent 221449c commit 262fd23

1 file changed

Lines changed: 52 additions & 0 deletions

File tree

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*/
5+
var isPalindrome = function (s) {
6+
7+
//NOTE: λ‹€μŒμ—λŠ” 투 포인터 λ°©μ‹μœΌλ‘œ λΆˆμ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€...
8+
9+
//0. μ—£μ§€μΌ€μ΄μŠ€ λŒ€λΉ„: 빈칸인 경우.
10+
if (s.trim() === '') {
11+
return true;
12+
}
13+
14+
//1. sλ₯Ό array둜 λ³€ν™˜
15+
const sArray = Array.from(s);
16+
17+
// μ•ŒνŒŒλ²³λ§Œ λ‚¨κΈ°λŠ” μž‘μ—…
18+
// (Alphanumeric characters include letters and numbers.)
19+
const aAscii = 'a'.charCodeAt(0);
20+
const zAscii = 'z'.charCodeAt(0);
21+
const aUpperAscii = 'A'.charCodeAt(0);
22+
const zUpperAscii = 'Z'.charCodeAt(0);
23+
const zeroAscii = '0'.charCodeAt(0);
24+
const nineAscii = '9'.charCodeAt(0);
25+
26+
const filteredArray = [];
27+
for (let char of sArray) {
28+
let charAscii = char.charCodeAt(0);
29+
30+
let isCharacter = (charAscii >= aAscii && charAscii <= zAscii) || (charAscii >= aUpperAscii && charAscii <= zUpperAscii) || (charAscii >= zeroAscii && charAscii <= nineAscii);
31+
32+
if (isCharacter) {
33+
filteredArray.push(char);
34+
}
35+
}
36+
37+
// λŒ€λ¬Έμž -> μ†Œλ¬Έμžλ‘œ λ³€κ²½ν•˜λŠ” μž‘μ—…
38+
const lowerArray = [];
39+
for (let char of filteredArray) {
40+
lowerArray.push(char.toLowerCase());
41+
}
42+
43+
// reverse 해도 λ˜‘κ°™μ€μ§€ ν™•μΈν•˜λŠ” μž‘μ—…
44+
const reversedArray = [...lowerArray].reverse();
45+
46+
const originalString = lowerArray.join();
47+
const reversedString = reversedArray.join();
48+
49+
return originalString === reversedString;
50+
51+
};
52+

0 commit comments

Comments
Β (0)