题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507
#include <stdio.h> #include <string.h> int main() { char s[351]={0}; scanf("%s",s); int len=strlen(s); int dp[len][len]; memset(dp,0,sizeof(dp)); for(int i=0;i<len;i++) { dp[i][i]=1; } for(int j=1;j<len;j++) { for(int i=0;i<j;i++) { if(s[i]!=s[j]) dp[i][j]=0; if(s[i]==s[j]) { if(j-i<=2) dp[i][j]=1; else dp[i][j]=dp[i+1][j-1]; } } } int max=0; for(int j=0;j<len;j++) { for(int i=0;i<=j;i++) { if(dp[i][j]&&j-i+1>max) max=j-i+1; } } printf("%d\n",max); return 0; }