★★ 회문 문자열 : toLowerCase는 값을 리턴할 뿐! / split, reverse, join

frenchkebab·2021년 8월 19일
0
post-thumbnail

2가지 방법


방법1) 직접 앞뒤로 비교

내풀이

function solution(s) {
  const mid = Math.floor(s.length - 1) / 2;
  let flag = true;
  let answer;
  s = s.toLowerCase();
  for (let i = 0; i < mid; i++) {
    if (s[i] !== s[s.length - 1 - i]) {
      flag = false;
    }
  }
  if (flag === true) {
    answer = 'YES';
  } else {
    answer = 'NO';
  }
  return answer;
}

let str = 'goooG';
console.log(solution(str));

해설 풀이

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;
}
  • str.toLowerCase() 를 사용하면 str 자체를 바꾸는줄 알았는데,
    값을 return한다. (여기서 좀 헤맸다)
  • 확실히 해설 풀이에 비해 내 코드가 지저분해 보이는 것 같다.
    굳이 flag가 필요 없는 경우 그냥 정답 값을 바로 return하는 것도 방법일 것 같다.

방법2) 문자열 함수 대파티

function solution(s) {
  let answer = 'YES';
  s = s.toLowerCase();
  if (s.split('').reverse().join('') != s) return 'NO';
  return answer;
}

let str = 'gooG';
console.log(solution(str));
  • 물론 방법1'알고리즘' 적으로는 더 바람직할 수도 있으나....
    문자열 함수알고 쓰지 않는 것몰라서 못쓰는 것차이가 있으므로 알아두자!
profile
Blockchain Dev Journey

0개의 댓글