最长回文子串
发布时间: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; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |