Saturday, January 30, 2016

Longest palindromic substring

Problem: Given a string S, find the longest palindromic substring in S.
Solution:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
string expandAroundCenter(string s, int c1, int c2) {
  int l = c1, r = c2;
  int n = s.length();
  while (l >= 0 && r <= n-1 && s[l] == s[r]) {
    l--;
    r++;
  }
  return s.substr(l+1, r-l-1);
}
  
string longestPalindromeSimple(string s) {
  int n = s.length();
  if (n == 0) return "";
  string longest = s.substr(0, 1); // a single char itself is a palindrome
  for (int i = 0; i < longest.length(); i++) {
    
    String p1 = expandAroundCenter(s, i, i)
    if(p1.length() > longest.length())
      longest = p1;  
    string p2 = expandAroundCenter(s, i, i+1);
    if (p2.length() &gt; longest.length())
      longest = p2;
  }
  return longest;
}

No comments:

Post a Comment