가장 긴 팰린드롬

Lee1231234·2023년 3월 6일

코딩테스트

목록 보기
16/95

문제 설명
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.
문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.
예를들면, 문자열 s가 "abcdcba"이면 7을 return하고 "abacde"이면 3을 return합니다.
제한사항
문자열 s의 길이 : 2,500 이하의 자연수
문자열 s는 알파벳 소문자로만 구성

코드

class Solution
{
    public int solution(String s)
    {
        int answer = 0;
        int length = s.length();
        for(int i=length;i>0;i--){
            for(int j=0;j+i<=length;j++){
                boolean check = true;
                for(int k = 0; k < i / 2; k++) { 
                    if(s.charAt(j+k) != s.charAt(j+i-k-1)){
                        check = false;
                        break;
                    }
                }
                if(check){
                    return i;
                }
            }
        }        
        return 1;
    }
}

substring을 사용하면 효율성에서 넘어갈수가 없다
따라서 DP방식을 선택하던지 CharAt으로 하나씩 넘기는 방식을 사용해야한다.

profile
not null

0개의 댓글