[JS알고리즘] 회문 문자열



앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.

문자열이 입력되면 해당 문자열이 회문 문자열이면 “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));
  1. 우선 소문자든 대문자든 통일을 시켜준다
  2. len으로 문자열의 길이를 구해준다. 문자길이를 2로 나눈 몫만큼만 비교해주면 되기 떄문에 len을 2로 나눈 Math.floor을 이용한다
  3. 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));
  1. 문자열을 split해주고 reverse로 전체를 뒤집는다.
  2. 배열로 잘려있기 때문에 다시 문자열로 묶어주기 위해 join으로 묶어주고 그 묶어준 문자열이 원래 원본 문자인 s와 동일하지 않다면 NO를 리턴한다



inflearn 자바스크립트 알고리즘 강의 내용 =)




© 2018. by sora

Powered by sora