m的初始值不应该是1吗?
仅供参考,谢谢!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//无重复检测
int pd(const char *s)
{
if(!s)return 0;
size_t n=strlen(s);
char *p1=s,*p2;
while(p1<(s+n-1))
{
p2=p1+1;
while(p2<(s+n))
{
if(*p1==*p2)
return 0;
p2++;
}
p1++;
}
return 1;
}
int main()
{
char s[10240]= {'\0'},*p1=s,*p2;
int len,max=1,m;
scanf("%10239s",s);
len=strlen(s);
char buf[len+1];
memset(buf,'\0',len+1);
while(p1<(s+len-1))
{
p2=p1+1;
while(p2<(s+len))
{
m=p2-p1+1;
strncpy(buf,p1,m);
if(pd(buf) && m>max)
{
max=m;
}
memset(buf,'\0',len+1);
p2++;
}
p1++;
}
printf("%d\n", max);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: