<Lv.3> 가장 긴 팰린드롬 (프로그래머스 : C#)

이도희·2023년 8월 5일
0

알고리즘 문제 풀이

목록 보기
147/185

https://school.programmers.co.kr/learn/courses/30/lessons/12904?language=csharp

📕 문제 설명

문자열의 부분문자열 중 가장 긴 팰린드롬의 길이 반환

  • Input
    문자열
  • Output
    부분문자열 중 가장 긴 팰린드롬의 길이

예제

풀이

문자열 한번 쭉 돌면서 해당 인덱스를 mid로 뒀을 때 짝수랑 홀수 palindrome 확인해서 길이 구하기

using System;

public class Solution {
    public int solution(string s) {
        int answer = 1;
        
        for (int i = 1; i < s.Length - 1; i++)
        {
            answer = Math.Max(answer, GetOddPalindromeLength(i, s));
            answer = Math.Max(answer, GetEvenPalindromeLength(i, i + 1, s));
        }
        
        return answer;
    }
    
    public int GetOddPalindromeLength(int mid, string s)
    {
        int length = 1;
        int i = 1;
        while (mid - i >= 0 && mid + i < s.Length)
        {
            if (s[mid - i] != s[mid + i])
            {
                return length;
            }
            i += 1;
            length += 2;
        }
        
        return length;
    }
    
    public int GetEvenPalindromeLength(int mid1, int mid2, string s)
    {
        int length = 2;
        int i = 1;
        if (s[mid1] != s[mid2]) return length;
        
        while (mid1 - i >= 0 && mid2 + i < s.Length)
        {
            if (s[mid1 - i] != s[mid2 + i])
            {
                return length;
            }
            i += 1;
            length += 2;
        }
        
        return length;
    }
}

결과

profile
하나씩 심어 나가는 개발 농장🥕 (블로그 이전중)

0개의 댓글