需要找出s中最长回文字串

【题目描述】
给定一个字符串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;
}

#include <iostream>
#include <string.h>
#include <set>
using namespace std;

bool IsPalindromicStr(string str)
{
    for (int i = 0; i < str.size() / 2; ++i)
    {
        if (str[i] != str[str.size() - 1 - i])
            return false;
    }
    return true;
}
string countPalindromicSubstr(string str)
{
    string s = "";
    for (int i = 0; i < str.size(); i++)
    {
        for (int j = 1; j < str.size() + 1 - i; j++)
        {
            string substring = str.substr(i, j);
            if (IsPalindromicStr(substring))
            {
                if (substring.length() > s.length())
                {
                    s = substring;
                }
                else if (substring.length() == s.length())
                {
                    s = substring.compare(s) == -1 ? substring : s;
                }
            }
        }
    }
    return s;
}

int main()
{
    string testStr;
    cout << "Enter string: " << endl;
    cin >> testStr;
    cout << countPalindromicSubstr(testStr) << endl;
}