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;
}
}