회문 문자열(팰린드롬)
회문 문자열(팰린드롬)
👉 회문은 앞에서 읽으나 뒤에서 읽으나 똑같아야 한다. 이를 인지하고 문제를 해결해보자.
두 가지 방법이 있다.
-
for문을 통해서 하나씩 비교하는 방법
-
js 메서드를 이용하여 문자열을 변환 후 비교하는 방법
이제 두 가지의 방법으로 문제를 해결해보자.
function solution(s){
let answer = "YES";
s = s.toUpperCase(); ... 1
let n = s.length;
for(let i = 0; i < Math.floor(n/2); i++){ ... 2
if(s[i] !== s[n -1-i]){ ... 3
return "No";
}
}
return answer;
}
let str="goooG";
console.log(solution(str));
=====
"YES"
for문을 통해 해결
👉 첫 번째, for문을 통해 문제를 해결하는 방법이다.
-
대소문자를 구별하지 않는다. ⇒ 문자열을 모두 대문자로 하든, 소문자로 하든 처리
-
for문을 통해서 하나씩 비교를 하려고 한다. 가운데를 기준으로 왼쪽과 오른쪽이 같으면 된다. 이때, 홀수일 경우 소숫점을 날려버리면 가운데 인덱스가 나오게 된다. 짝수는 가운데 2개의 값이니 for문을 한번 더 돌린다 생각하고 돌려버리자.
-
배열[배열의 길이 - 1 -i]는 배열의 맨 끝에서 처음까지 접근할 수 있다. 이를 이용하여 맨 처음 요소와 맨 끝 요소를 비교할 수 있다.
function solution(s){
let answer = "YES";
s = s.toUpperCase();
if(s.split('').reverse().join('') !== s) return "NO";
return answer;
}
let str="gooeG";
console.log(solution(str));
=====
"NO"
reverse() 통해 해결
👉 JS의 메서드를 이용하는 방법이다.
-
대소문자를 구별하지 않는다. ⇒ 문자열을 모두 대문자로 하든, 소문자로 하든 처리
-
String의 split()을 통해 배열로 변환, Array의 reverse를 통해 배열을 거꾸로 돌린다. Array의 join()을 통해 문자열로 변환한다. 이를 통해 나온 문자열과 원본 문자열을 비교하여 값을 받으면 된다.
출처 - 자바스크립트 알고리즘 문제풀이
Author And Source
이 문제에 관하여(회문 문자열(팰린드롬)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rkrkdldkd/회문-문자열팰린드롬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)