现在是 87分,最后一个点 T 掉了,就超了一点点,还有可优化空间吗?
#include<bits/stdc++.h>
using namespace std;
const int NR = 20010;
int p[NR];
string s = "", t = "";
bool check(int l, int r)
{
for (int i = 0; i <= (r - l) / 2 + 1; i++)
if (t[l + i] != t[r - i]) return false;
return true;
}
int main()
{
string temp;
while (getline(cin, temp)) s += temp, s += '\n';
int pos = -1;
for (int i = 0; i < s.size(); i++)
{
char c = s[i];
if ('a' <= c && c <= 'z') c = c -'a' + 'A';
if ('A' <= c && c <= 'Z')
{
t += c;
p[++pos] = i;
}
}
int mx = 0, st;
for (int l = 0; l < t.size(); l++)
for (int r = l + mx; r < t.size(); r++)
{
if (r - l + 1 > 2000) break;
if (check(l, r))
{
if (r - l + 1 > mx)
{
mx = r - l + 1;
st = l;
}
}
}
printf("%d\n", mx);
for (int i = p[st]; i <= p[st + mx - 1]; i++)
printf("%c", s[i]);
return 0;
}
求助大佬!!