[JS알고리즘] 회문 문자열
in Algorithm
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 “YES”, 회문 문자열이 아니면 “NO”를 출력
하는 프로그램을 작성하세요.
단 회문을 검사할 때 대소문자를 구분하지 않습니다.
메소드를 이용하지 않고 for로만 이용해서 해결하는 경우
function solution(s){
let answer="YES";
s=s.toLowerCase();
let len=s.length;
for(let i=0; i<Math.floor(len/2); i++){
if(s[i]!=s[len-i-1]) return "NO";
}
return answer;
}
let str="goooG";
console.log(solution(str));
- 우선 소문자든 대문자든 통일을 시켜준다
- len으로 문자열의 길이를 구해준다. 문자길이를 2로 나눈 몫만큼만 비교해주면 되기 떄문에 len을 2로 나눈 Math.floor을 이용한다
s[len-i-1]
0번인덱스이기 떄문에 -1을 해주어야 한다.
메소드를 이용한 경우
function solution(s){
let answer="YES";
s=s.toLowerCase();
if(s.split('').reverse().join('') != s) return "NO";
return answer;
}
let str="goooG";
console.log(solution(str));
- 문자열을 split해주고 reverse로 전체를 뒤집는다.
- 배열로 잘려있기 때문에 다시 문자열로 묶어주기 위해 join으로 묶어주고 그 묶어준 문자열이 원래 원본 문자인 s와 동일하지 않다면 NO를 리턴한다
inflearn 자바스크립트 알고리즘 강의 내용 =)