安东三废 2022-02-19 09:05 采纳率: 50%
浏览 55
已结题

C语言程序,无法进入被调函数(至少是无法打印),以及其他问题

在力扣刷的题:

img

目前的代码:

int lengthOfLongestSubstring(char * s){
    int length = strlen(s);
    int i = 0;
    int j = 0;
    int k = 0;
    int max = 0;
    int flag = 0;
    if (length == 1)
    {
        max = 1;
        return max;
    }
    for(i = 0; i < length-2; i++)  //左指针
    {
        for(j = i+1; j < length-1; j++)  //右指针
        {
            if (s[i] == s[j])
                break;
            for (k=i; k<j; k++)  //内指针
            {
                printf("%d", k);
                flag = 1;  //提示进入过比较循环
                if(s[k] == s[j])
                    goto LH;
            }
        }
        LH: ;
        int p = max;  //防止max值被更小者取代
        max = max<j-i? j-i:max;
        printf("max = %d,", max);
        if (flag == 1 && s[k] == s[j] && max > p)
            max = max -1;
    }
    return max;
}

结果:无论用例,返回值为0。
曾经的代码:
①没有goto,在第三层for最后是if(s[k]==s[j]) break;,测试用例“abcabcbb”,返回值3;用例“pwwekw”,返回值5。
②没有goto,在第三层for最后是if(s[k]==s[j]) break;,使内指针不再检测重复,第三层结束后在第二层末尾紧接着重复if(s[j]==s[k]) break;,使外指针不再增加。无论用例,返回值0。

  • 写回答

2条回答 默认 最新

  • 易水卷长空 2022-02-19 11:03
    关注

    是你忘记删除那两条printf语句了吧,另外你这个代码还有其他bug,有的数据比如“aa”就通不过

    int lengthOfLongestSubstring(char * s){
        int length = strlen(s);
        int i = 0;
        int j = 0;
        int k = 0;
        int max = 0;
        int flag = 0;
        if (length == 1)
        {
            return 1;
        }
        for(i = 0; i < length-2; i++)  //左指针
        {
            for(j = i+1; j < length-1; j++)  //右指针
            {
                if (s[i] == s[j])
                    break;
                for (k=i; k<j; k++)  //内指针
                {
                    flag = 1;  //提示进入过比较循环
                    if(s[k] == s[j])
                        goto LH;
                }
            }
            LH: ;
            int p = max;  //防止max值被更小者取代
            max = max<j-i? j-i:max;
            if (flag == 1 && s[k] == s[j] && max > p)
                max = max -1;
        }
        return max;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月28日
  • 已采纳回答 2月20日
  • 修改了问题 2月19日
  • 创建了问题 2月19日