救命,为啥会t4个点阿
查看原帖
救命,为啥会t4个点阿
612046
daguzi楼主2022/10/25 20:43
#include<bits/stdc++.h>
using namespace std;

char st[221000010];
int len[221000010], ans;
int idx;

void add()
{
	char s;
	while(isalpha(s=getchar()))
	{
		st[++idx] = '#';
		st[++idx] = s;
	}
	
	st[0] = '{';
	st[idx+1] = '#';
	st[idx+2] = '}';
}

int main(void)
{
	add();
	//for(int i = 0; i < (int)strlen(st); ++i) cout << st[i];
	//puts("");
	int x = 0, r = 0;
	int ll = (int)strlen(st);
	for(int i = 0; i < ll; ++i)
	{
		len[i] = x>i ? min(len[2*x-i],r-i):1;
		while(st[i+len[i]] == st[i-len[i]]) len[i]++;
		if(r < i+len[i])
		{
			r = i+len[i];
			x = i;
		}
		ans = max(ans, len[i]-1);
	}
	printf("%d", ans);
	return 0;
}
2022/10/25 20:43
加载中...