leetcode找最大无重复子串

img

大家,帮忙看看,语法没有错误,但是解答错误,有例子不能通过。

m的初始值不应该是1吗?

仅供参考,谢谢!

img

img

img

#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;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^