【我好惨】L2-008 最长对称子串(字符串处理,动态规划)

    科技2022-07-27  109

    最长对称子串

    题目思路代码回顾回文数

    题目

    思路

    代码

    #include<iostream> using namespace std; int main(){ string s; /*输入一行字符串包含空格*/ getline(cin,s); int maxvalue=0; //最终回文子串长度 int temp; //记录回文子串长度的中介 int len=s.length(); /*回文子串为奇数, 以i为下标的字符为该回文子串的中间字符 */ for(int i=0;i<len;i++){ temp=1; //第i个字符算入,长度+1 for(int j=1;j<len;j++){ /*第i-j个字符不存在 第i+j个字符不存在 第i个字符两边对称字符不相等 */ if(i-j<0||i+j>=len||s[i-j]!=s[i+j]) break; //第i-j和第i+j两个字符不计入回文子串 /*第i-j和第i+j两个字符计入回文子串 长度+2*/ temp+=2; } maxvalue=temp>maxvalue?temp:maxvalue; //maxvalue=max(temp,maxvalue); /*回文子串为偶数, 以i、i+1为下标的字符为该回文子串的中间对称字符 */ temp=0; for(int j=1;j<len;j++){ /*i+1左边第j个字符不存在 i右边第j个字符不存在 第i+1-j和第i+j两个对称字符不相等 */ if(i+1-j<0||i+j>=len||s[i+1-j]!=s[i+j]) break; //第i+1-j和第i+j两个字符不计入回文子串 temp+=2; //两字符算入,长度+2 } maxvalue=temp>maxvalue?temp:maxvalue; } cout<<maxvalue; return 0; }

    回顾回文数

    判断回文数
    Processed: 0.011, SQL: 8