/*
e.g: input:   abcdefgegcsgcasse
     output:  abcdefg
     tips: 算法示例,只支持由小写字母构成的字符串,当然可以lastpos[256];
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
 char buf[128];
 scanf("%s",buf);
 int i,lastpos[26];
 for(i=0;i<26;i++)
 lastpos[i] = -1;
 int s=0,maxlen=0,maxs,maxe;
 int len=strlen(buf);
 for(i=0;i<len;i++)
 {
 if(s > lastpos[buf[i]-'a'])
 {
 lastpos[buf[i]-'a']=i;
 }
 else
 {
 int len = i-s;
 if(len > maxlen)
 {
 maxlen = len;
 maxs = s;
 maxe = i-1;
 }
 s = i;
 lastpos[buf[i]-'a']=i;
 }
 }
 for(i=maxs;i<=maxe;i++)
 printf("%c",buf[i]);
 printf("\n");
 return 0;
}
转载请注明来源:Leoncom-《求一个字符串中最长的不存在重复字符的字串》
Trackback

no comment untill now

Add your comment now