javascript 가장 긴 팰린드롬

HyosikPark·2021년 3월 26일
0

알고리즘

목록 보기
66/72
function solution(s){
  for (let i = s.length; i >= 3; i--) {
      outer: for (let j = 0; j <= s.length - i; j++) {
          const mid = Math.floor(i / 2)
          const left = s.slice(j, mid + j);
          const right = i % 2 ? s.slice(mid + 1 + j, i + j) : s.slice(mid + j, i + j);
          
          for (let k = 0; k < left.length; k++) {
              if (left[k] !== right[left.length-k-1]) continue outer
          }
            return i         
      }
  }  
    return 1;
}

핵심은 두수가 같은지를 비교하기 위해서 오른쪽 문자열을 .split('').reverse().join('')하여 비교하는 과정은 형변환에 계산되는 비용이 많이 든다는 것이다 따라서 왼쪽 오른쪽 문자열을 하나하나 비교해 보며 일치하지 않는경우 바로 continue해버리는 과정이 더 효율적이다.

0개의 댓글