Longest Palindromic Substring (LeetCode)

Code Snippets 4 U

Problem:

Given a string s, return the longest 

palindromic

substring in s.

Example 1:

Input: s = “babad”

Output: “bab”

Explanation: “aba” is also a valid answer.

Example 2:

Input: s = “cbbd”

Output: “bb”

Constraints:

  • 1 <= s.length <= 1000
  • s consist of only digits and English letters.

Solution:

public class Solution {
    private String st = "";
    public string LongestPalindrome(string s)
    {
        st = s;
        var max = 0;
        var startOfPalindrom = 0;
        var endOfPalindrom = 0;

        var end = s.Length - 1;
        for (int i = 0; i < s.Length; i++)
        {
            if (end - i < max) {
                break;
            }
            while (end - i > max)
            {
                if (IsPalindrom(i, end))
                {
                    startOfPalindrom = i;
                    endOfPalindrom = end;
                    max = endOfPalindrom - startOfPalindrom;
                    break;
                } else
                {
                    end--;
                }
            }
            end = s.Length - 1;
        }
        return s.Substring(startOfPalindrom, endOfPalindrom - startOfPalindrom + 1);
    }

    private bool IsPalindrom(int start, int end)
    {
        while (end >= start)
        {
            if (st[end] != st[start])
            {
                return false;
            }
            end--;
            start++;
        }
        return true;
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *

forty one − thirty three =