1. 程式人生 > >最長對稱子串 -- 天梯模擬

最長對稱子串 -- 天梯模擬

Think:
判斷字串中最大的迴文串長度,長度較小,直接暴力就可以過。。。
是PTA的模擬題。。。

題目
對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定Is PAT&TAP symmetric?,最長對稱子串為s PAT&TAP s,於是你應該輸出11。
輸入格式:

輸入在一行中給出長度不超過1000的非空字串。
輸出格式:

在一行中輸出最長對稱子串的長度。
輸入樣例:

Is PAT&TAP symmetric?

輸出樣例:

11

各個測試點的坑
測試點1 答案正確 sample等價
測試點2 答案正確 有2段對稱,後段長
測試點3 答案正確 偶數對稱
測試點4 答案正確 最大N全對稱
測試點5 答案正確 全不對稱
測試點6 答案正確 最短串
測試點7 答案正確 最長串的區域性不對稱較長

#include<bits/stdc++.h>
#include<string>
using namespace std;
bool judge(string & str, int s, int len);
int main()
 {
    string str;
    int i, j;
    getline(cin,str);
    int Max = 1;
    for (i = 0;i <= str.size() - 1;i ++)
       {
          for (j = 1;j <= str.size() - i;j ++)
            {
               if
(judge(str,i,j) && j > Max) Max = j; } } cout << Max << endl; return 0; } bool judge(string & str, int s, int len) { int i; for (i = s;i < len / 2 + s;i ++) { if (str[i] != str[s + len - i + s - 1]) return
false; } return true; }