가장 긴 팰린드롬 ( 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);
}
}
재귀로 풀었는데 개모싯다