/*
问题描述:给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串
来源:LintCode
作者:syt
问题描述:给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串
来源:LintCode
作者:syt
日期:2017-7-25
思路:使用两个下标,进行遍历,找到回文子串并保存,时间复杂度还能够继续改进
*/
#include <iostream>
#include <string>
using namespace std;
/**
* @param s input string
* @return the longest palindromic substring
*/
string longestPalindrome(string& s) {
// Write your code here
if (s.length() == 1)
return s;
string result = "";
int max = 0;
int ii, jj;
for (int i = 0; i < s.length(); i++)
{
for (int j = s.length() - 1; j > i; j--)
{
if (s[i] == s[j])
{
ii = i;
jj = j;
bool is = true;
while (ii < jj)
{
if (s[ii] == s[jj])
{
ii++;
jj--;
}
else
{
is = false;
break;
}
}
if (is)
{
int len = j - i + 1;
if (len > max)
{
max = len;
result = s.substr(i, len);
}
break;
}
}
}
}
return result;
}