📌강의 정리
회문문자열은 영어로 팰린드롬이다.
이번에는 알파벳만 비교해야 한다.
내장함수로 풀어보자.
우선 YES NO 로 받으니 앤서를 예스로 해놓고 소문자화한다음에
리플레이스를 해서 알파벳만 놔두고 나머지문자는 다 없앤다.
이 과정은 정규식으로 쉽게 표현할 수 있다.
/[^a-z]/g을 하면 된다. 꺽쇠는 부정의 의미이므로 그 이외의 것들을 다 없애라는 뜻이 된다. g는 글로벌영역 전체를 의미한다.
그 다음엔 빈문자를 넣어주면 된다.
s=s.toLowerCase().replace(/[^a-z]g, '');
를 하면 소문자로 문자만 남길 수 있다.
이제 전에 스플릿과 리버스와 조인을 써서 다시 s와 비교하면 손쉽게 풀 수 있다.
이 문제는 리플레이스에서 정규식이용이 중요하다.
📌느낀점
이제는 정규식과 메서드를 피할 수 없다.
편하고 간결한게 매우 확실하다.
조금의 매서드를 잘 다듬고 외워서 효과적으로 응용할 수 있도록 노력해야 한다.
//나의 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s){
let answer="YES";
let len = s.length;
s = s.toLowerCase();
let a = "";
for(let j = 0; j<len; j++){
if(s[j].charCodeAt() >= 97 && s[j].charCodeAt() <=122) a+=s[j]
}
let lenA = a.length;
for(let i = 0; i<Math.floor(lenA/2); i++){
if(a[i] !== a[lenA-i-1]) return "NO"
}
return answer;
}
let str="found7, time: study; Yduts; emit, 7Dnuof";
console.log(solution(str));
</script>
</body>
</html>
//강사님 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(s){
let answer="YES";
s=s.toLowerCase().replace(/[^a-z]/g, '');
if(s.split('').reverse().join('')!==s) return "NO";
return answer;
}
let str="found7, time: study; Yduts; emit, 7Dnuof";
console.log(solution(str));
</script>
</body>
</html>
'JS 알고리즘 문제풀이 > 섹션 3. 문자열 탐색' 카테고리의 다른 글
5.문자열 압축 (0) | 2022.01.13 |
---|---|
4.가장 짧은 문자거리 (0) | 2022.01.13 |
3.숫자만 추출 (0) | 2022.01.13 |
1.회문 문자열 (0) | 2022.01.13 |