jessie_jt 2022-10-22 20:22 采纳率: 75%
浏览 99
已结题

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

【题目描述】
给定一个字符串s,找到s中的最长回文子串(Longest Palindromic Substring,LPS);
若有多个结果,请输出字典序最小的LPS。

【输入格式】
一行,字符串s

【输出格式】
一行,表示最长回文子串

【数据范围】
对于100%的数据:1<=|s|<=5000,且s仅仅含有小写字母

【样例输入1】
baacaaba
【样例输出1】
baacaab
【样例解释1】
最长回文子串为baacaab

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-10-22 21:23
    关注
    #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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 已采纳回答 10月22日
  • 创建了问题 10月22日

悬赏问题

  • ¥15 hexo+github部署博客
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?