Skip to content

Commit d1500c2

Browse files
committed
Valid Palindrome solution
1 parent 63e1a6e commit d1500c2

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

valid-palindrome/clara-shin.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* 문자열이 팰린드롬인지 확인하는 함수
3+
* 팰린드롬 판단:
4+
* 대문자를 소문자로 변환
5+
* 영숫자(알파벳이랑 숫자)만 남기고 나머지 제거 => 정규식 알면 편함
6+
* 앞에서 읽으나 뒤에서 읽으나 같아야 함
7+
*/
8+
9+
/**정규식 없이 문자열 뒤집는 방법
10+
* @param {string} s
11+
* @return {boolean}
12+
*/
13+
var isPalindrome = function (s) {
14+
s = s.toLowerCase();
15+
16+
let str = ''; // 영숫자만 남길 문자열
17+
for (let i = 0; i < s.length; i++) {
18+
const char = s[i];
19+
// 알파벳이거나 숫자면 str에 추가
20+
if ((char >= 'a' && char <= 'z') || (char >= '0' && char <= '9')) {
21+
str += char;
22+
}
23+
}
24+
25+
// 문자열 뒤집기
26+
let reversedStr = str.split('').reverse().join('');
27+
28+
return str === reversedStr;
29+
};
30+
31+
/**정규식 사용한 투 포인터 방법
32+
* @param {string} s
33+
* @return {boolean}
34+
*/
35+
var isPalindrome2 = function (s) {
36+
const str = s.toLowerCase().replace(/[^a-z0-9]/g, ''); // 영숫자만 남기
37+
38+
// 투 포인터
39+
let left = 0;
40+
let right = str.length - 1;
41+
42+
while (left < right) {
43+
if (str[left] !== str[right]) {
44+
return false;
45+
}
46+
left++;
47+
right--;
48+
}
49+
return true;
50+
};

0 commit comments

Comments
 (0)