File tree Expand file tree Collapse file tree 1 file changed +76
-0
lines changed
Expand file tree Collapse file tree 1 file changed +76
-0
lines changed Original file line number Diff line number Diff line change 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 - z 0 - 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+
You can’t perform that action at this time.
0 commit comments