Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example:
Input: "cbbd" Output: "bb"
1 public class Solution { 2 public string LongestPalindrome(string s) { 3 if (s.Length < 2) return s; 4 5 string curRes = ""; 6 7 for (int i = 0; i < s.Length; i++) 8 { 9 var tmp = findLongestPalindrome(s, 0, i, Math.Min(2 * i, s.Length - 1), true); 10 if (tmp.Length > curRes.Length) 11 { 12 curRes = tmp; 13 } 14 15 tmp = findLongestPalindrome(s, 0, i, Math.Min(2 * i + 1, s.Length - 1), false); 16 if (tmp.Length > curRes.Length) 17 { 18 curRes = tmp; 19 } 20 } 21 22 return curRes; 23 } 24 25 private string findLongestPalindrome(string s, int start, int mid, int end, bool isCenter) 26 { 27 28 int i = 0, j = 0; 29 if (isCenter) 30 { 31 i = mid - 1; 32 j = mid + 1; 33 34 while (i >= start && j <= end) 35 { 36 if (s[i] == s[j]) 37 { 38 i--; 39 j++; 40 } 41 else 42 { 43 break; 44 } 45 } 46 47 return s.Substring(i + 1, j - i - 1); 48 } 49 else 50 { 51 i = mid; 52 j = mid + 1; 53 54 while (i >= start && j <= end) 55 { 56 if (s[i] == s[j]) 57 { 58 i--; 59 j++; 60 } 61 else 62 { 63 break; 64 } 65 } 66 67 if (j - i - 1 < 1) return ""; 68 69 return s.Substring(i + 1, j - i - 1); 70 } 71 } 72 }