加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

最长回文子串

发布时间:2020-12-15 07:44:18 所属栏目:Java 来源:网络整理
导读:给定一个字符串,求出其中的最长回文子串。 #includeiostream#includevector#includealgorithm#includestringusing namespace std;int LongestPalindromicSubstring(string a){ int size=a.length(); vectorvectorintdp(size,vectorint(size,1)); int res=0;

给定一个字符串,求出其中的最长回文子串。

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
int LongestPalindromicSubstring(string a){
    int size=a.length();
    vector<vector<int>>dp(size,vector<int>(size,1));
    int res=0;
    for(int step=1;step<size;step++){
        for(int j=0;j+step<size;j++){
            if(step==1){
                if(a[j]==a[j+step]){
                    dp[j][j+step]=step+1;
                    res = max(res,step+1);
                }
                else{
                    dp[j][j+step]=0;
                }
            }
            else{
            if(a[j]==a[j+step]&&dp[j+1][j+step-1]){
                dp[j][j+step]=step+1;
                res = max(res,step+1);
            }
            else{
                dp[j][j+step]=0;
            }
            }
        }
    }//for
    return res;
}

int main(){
    string a;
    while(getline(cin,a)){
       cout<<LongestPalindromicSubstring(a)<<endl;
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读