가장 긴 팰린드롬 ( Level 2, JavaScript )

문제

앞뒤를 뒤집어도 똑같은 문자열을 palindrome이라고 합니다.
longest_palindrom함수는 문자열 s를 매개변수로 입력받습니다.
s의 부분문자열중 가장 긴 palindrom의 길이를 리턴하는 함수를 완성하세요.
예를들어 s가 토마토맛토마토이면 7을 리턴하고 토마토맛있어이면 3을 리턴합니다.

풀이

function longest_palindrom(s){
  let res = 1, j
  for ( let i = 1; i < s.length - 1; i++ ) {
    j = 1;
    while ( i >= j && i+j <= s.length && s[i+j] === s[i-j] ) {
      j++
    }
    if ( j*2 -1 > res ) res = j*2 - 1
  }
  return res
}

문자열에서 앞뒤로 하나하나 비교하면서 최대길이의 팰린드롬을 찾는 방법

안좋은코드지만 별다른 방법이 생각나지 않았음

다른 사람의 풀이

function longest_palindrom(s){
  if (s === s.split("").reverse().join("")) {
    return s.length;
  } else {
    var A = longest_palindrom(s.substring(0, s.length-1));
    var B = longest_palindrom(s.substring(1, s.length));
    return Math.max(A, B);
  }
}

재귀로 풀었는데 개모싯다

  1. 2018.03.16 12:14

    비밀댓글입니다

  2. BlogIcon takeu takeU 2018.03.16 12:50 신고

    ㅋㅋㅋ모래~

    • 쿄쿄 2018.05.05 02:50 신고

      진짜 개머싯네요.

+ Recent posts