본문 바로가기

Programing/Algorithm

[LeetCode] 5. Longest Palindromic Substring

728x90

 

 

 

https://leetcode.com/problems/longest-palindromic-substring/description/

 

public class Solution
{
    public string LongestPalindrome(string s)
    {
        var answer = $"{s.First()}";

        if (s.Length == 1)
            return answer;

        for (int i = 0; i < s.Length - 1; i++)
        {
            int left = i - 1;
            int right = i + 1;

            if ((left >= 0) && (s[left] == s[right]))
                GetLongestPalindrome(in s, left, right, ref answer);

            if (s[i] == s[right])
                GetLongestPalindrome(in s, i, right, ref answer);
        }

        return answer;
    }

    private string GetLongestPalindrome(in string s, int left, int right, ref string answer)
    {
        while ((left >= 0) && (right < s.Length) && (s[left] == s[right]))
        {
            int length = right - left + 1;
            if (answer.Length < length)
                answer = s.Substring(left, length);

            --left;
            ++right;
        }

        return answer;
    }
}

 

 

 

728x90