Skip to content

Commit 19dd2f9

Browse files
committed
3주차 문제 풀이
1 parent 421deb4 commit 19dd2f9

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

valid-palindrome/leehyeyun.js

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*/
5+
/*
6+
문자열이 주어졌을 때,
7+
이 문자열이 '유효한 회문(palindrome)'인지 판별하는 함수.
8+
9+
회문 판별 규칙:
10+
- 대문자는 소문자로 변환한다.
11+
- 영문자(a~z)와 숫자(0~9)만 남기고 나머지 문자는 제거한다.
12+
- 정제된 문자열을 앞에서 읽은 것과 뒤에서 읽은 것이 같으면 회문이다.
13+
14+
요청 형식 : isPalindrome(s)
15+
16+
입력 형식 :
17+
- s는 문자열(String)
18+
- 1 <= s.length <= 2 * 10^5
19+
- 문자열은 ASCII 출력 문자로만 구성됨
20+
21+
출력 형식 :
22+
- 유효한 회문이면 true
23+
- 아니면 false
24+
25+
예시 :
26+
27+
Example 1
28+
입력 :
29+
s = "A man, a plan, a canal: Panama"
30+
출력 :
31+
true
32+
설명 :
33+
정제하면 "amanaplanacanalpanama"
34+
회문이므로 true
35+
36+
Example 2
37+
입력 :
38+
s = "race a car"
39+
출력 :
40+
false
41+
설명 :
42+
정제하면 "raceacar"
43+
회문이 아님
44+
45+
Example 3
46+
입력 :
47+
s = " "
48+
출력 :
49+
true
50+
설명 :
51+
정제 후 "" (빈 문자열)
52+
빈 문자열은 회문으로 간주됨
53+
54+
제약사항 :
55+
- 문자열의 길이가 매우 크므로 O(n) 방식이 적합함
56+
*/
57+
var isPalindrome = function(s) {
58+
59+
let cleanString = s.toLowerCase().replace(/[^a-z0-9]/g, '');
60+
61+
let splitString = cleanString.split("");
62+
let reverseArray = splitString.reverse();
63+
let joinArray = reverseArray.join("");
64+
65+
if(cleanString != joinArray)
66+
{
67+
return false
68+
}else {
69+
return true
70+
}
71+
};
72+
73+
console.log(isPalindrome("A man, a plan, a canal: Panama"));
74+
console.log(isPalindrome("race a car"));
75+
console.log(isPalindrome(" "));
76+

0 commit comments

Comments
 (0)