개발/Algorithm

[알고리즘 javaScript] palindrome 팰린드롬:회문 문자열

개발 여행 2021. 11. 24. 19:08
728x90

회문 문자열이란?

앞에서부터 읽거나 뒤에서부터 읽거나 모두 동일한 문자열이다.


문제

문자열이 주어졌을 때 회문 문자열인지 아닌지 출력하는 코드를 작성해보자!

 

입력 & 출력

길이 100 이하의 공백 없는 문자열

ex1) TEST -> false 출력 

ex2) teeT -> ture 출력

 

풀이

두 가지 방법 정도로 해결할 수 있다.

1) Array.prototype.reverse()를 활용해서 거꾸로 뒤집어진 문자열 생성 후 같은지 확인.

Array.prototype.reverse()

 

2) 문자열의 앞과 뒤의 짝을 맞춰서 같은 문자인지 비교.

문자열의 맨 앞과 맨 뒤 비교, 두 번째 문자열과 끝에서 두 번째 문자열 비교

이렇게 반복해서 다른 문자가 있을 경우 false를 리턴한다.

 

코드

1) reverse

function 회문문자열(string) {
  string = string.toUpperCase();
  return string === [...string].reverse().join('');
}

 

2) 앞뒤 문자열 비교

function 회문문자열(string) {
  let result = true;
  string = string.toUpperCase();

  for (let i = 0; i < Math.floor(string.length / 2); index++) {
    if (string[i] !== string[string.length - i - 1]) {
      return false;
    }
  }

  return result;
}

참고

1) String.prototype.toUpperCase() 는 새로운 문자열을 반환하기 때문에 대문자로 변환한 문자를 다시 string의 값으로 할당해주어야 한다.

2) 문자열의 앞과 뒤의 짝을 맞춰서 같은 문자인지 비교하면 되기 때문에 string length를 2로 나눈 값 까지 for문이 반복되면 된다.

728x90