【题目描述】
给定一个字符串s,找到s中的最长回文子串(Longest Palindromic Substring,LPS);
若有多个结果,请输出字典序最小的LPS。
【输入格式】
一行,字符串s
【输出格式】
一行,表示最长回文子串
【数据范围】
对于100%的数据:1<=|s|<=5000,且s仅仅含有小写字母
【样例输入1】
baacaaba
【样例输出1】
baacaab
【样例解释1】
最长回文子串为baacaab
【题目描述】
给定一个字符串s,找到s中的最长回文子串(Longest Palindromic Substring,LPS);
若有多个结果,请输出字典序最小的LPS。
【输入格式】
一行,字符串s
【输出格式】
一行,表示最长回文子串
【数据范围】
对于100%的数据:1<=|s|<=5000,且s仅仅含有小写字母
【样例输入1】
baacaaba
【样例输出1】
baacaab
【样例解释1】
最长回文子串为baacaab
#include<iostream>
using namespace std;
#include <string>
bool IsReturnNumber(const string& str,int start,int end)
{
while(start < end)
{
if(str[start++] != str[end--])
return false;
}
return true;
}
string longestPalindrome(string s) {
string res;
res.push_back(s[0]);
int start = 0,end = s.length() - 1;
for(int i = 0;i < s.length();i++)
{
for(int j = i + 1;j < s.length();j++)
{
if(IsReturnNumber(s,i,j) )
{
if(j - i + 1 > res.length())
res = string(s.begin() + i, s.begin() + j + 1);
else if(j-i+1 == res.length())
{
string r = string(s.begin() + i, s.begin() + j + 1);
if(r<res)
res = r;
}
}
}
}
return res;
}
int main()
{
string s;
cin>>s;
cout<<longestPalindrome(s);
return 0;
}