最長對稱子串 -- 天梯模擬
阿新 • • 發佈:2019-02-09
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;
}