题目翻译
给定一个字符串,您应该输出最长的对称子字符串的长度。
例如,给定 Is PAT&TAP symmetric?
的最长的对称子字符串是 s PAT&TAP s
,因此必须输出 11
。
输入格式
每个输入文件包含一个测试用例,该用例给出的长度不超过1000的非空字符串。
输出格式
对于每个测试用例,只需在一行中打印最大长度即可。
输入样例
Is PAT&TAP symmetric?
样本输出
11
题解
动态规划:
#include <iostream>
using namespace std;
int f[1010][1010];
int main()
{
string s;
getline(cin, s);
int ans = 0;
for (int len = 1; len <= s.size(); len ++)
for (int l = 0; l + len - 1 < s.size(); l ++)
{
int r = l + len - 1;
if(len == 1) f[l][r] = true;
else if(len == 2) f[l][r] = (s[l] == s[r]);
else f[l][r] = f[l + 1][r - 1] && (s[l] == s[r]);
if(f[l][r]) ans = max(ans, r - l + 1);
}
cout << ans << endl;
return 0;
}