每次记录一个区间长度,当新加入的字符与它相等的最近字符的位置小于区间起点时,区间长度加1。
则更新区间,遍历一遍找到最大区间
#include<stdio.h>
#include<string.h>
int n,mark[150];
char str[10000010];
int main()
{
int i,x,len,ss,llen;
while(scanf("%d",&n)!=-1)
{
memset(mark,-1,sizeof(mark));//记录字符出现的位置
scanf("%s",str);
len=llen=0;x=ss=0;
for(i=0;i<n;i++)
{
if(mark[str[i]]<ss)//如果字符上次出现的位置在区间外,区间+1
llen++;
else
{ ......
阅读全文