hellopika 2022-04-14 19:56 采纳率: 100%
浏览 22
已结题

力扣第三题:无重复字符的最长子串 想知道哪里出错?

问题遇到的现象和发生背景

力扣第三题:无重复字符的最长子串 求问哪里出错?

img

问题相关代码,请勿粘贴截图
int lengthOfLongestSubstring(char * s){
    int i,j,m,n,k1,k2,k3=0;           //i为子串起始下标
    for(i=0;s[i+1]!='0';i++) //每个元素依次作为子串起始
    {
        for(k2=0;s[k2]!='0';k2++);//使k2等于数组长度
        for(m=i;s[m+1]!='0',m<(k2+i);m++)//检验字符m,从首字符到已知最短长度(k2+i)或最后一位依次循环
        {
            for(j=1,k1=(m-i+1);s[m+j]!='0';j++)
            {
                if(s[m]==s[m+j])
                {
                    break;
                }
                else k1++;//k1保存不含有与检验字符m重复字符的子串长度
            }
            if(k1<k2)
            {
                k2=k1;//k2保存不含有重复字符的子串长度
            }
        }
        if(k2>k3)
        {
            k3=k2;//k3保存不含有重复字符的最长子串的长度
        }
    }
    return k3;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法

①一串字符串 从头到尾每个元素依次作为子串的首元素。
②判断以某位元素作为首元素的这个子串的长度,再次(在这个子串中)从头到尾每个元素依次循环,遇到相同的就返回。
③同时记录当前长度,通过k三个变量记录长度来达到传递最终正确长度的效果

我想要达到的结果

虽然可能有更好的办法,但我还是想知道我的这个错在哪里,我无法相信我无法理解,我甚至自己举例子一步步试了,完全没有问题!!令人费解!

  • 写回答

1条回答 默认 最新

  • MGYH 2022-04-15 15:14
    关注

    我是C菜鸡,首先看这个是堆栈信息,应该是if(s[m]==s[m+j]),m+j越界了。
    第二,刚开始学算法,还是多看看题解,没必要自己解,有很多惯用的算法,理解之后在遇到能想到,就是你的东西。从头研究算法,意义不大,我们都是普通人,太费时间,会打击积极性。
    当然不只有题解才是对的,你的思路解不出来,再看题解也很合理。题解看懂,在分析一下你的代码,是超时间限制了,还是边界判断的有问题。
    报错信息,如果分析不对,就得C大佬看看了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月24日
  • 已采纳回答 4月16日
  • 创建了问题 4月14日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么