问题遇到的现象和发生背景
力扣第三题:无重复字符的最长子串 求问哪里出错?
问题相关代码,请勿粘贴截图
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;
}
运行结果及报错内容
我的解答思路和尝试过的方法
①一串字符串 从头到尾每个元素依次作为子串的首元素。
②判断以某位元素作为首元素的这个子串的长度,再次(在这个子串中)从头到尾每个元素依次循环,遇到相同的就返回。
③同时记录当前长度,通过k三个变量记录长度来达到传递最终正确长度的效果
我想要达到的结果
虽然可能有更好的办法,但我还是想知道我的这个错在哪里,我无法相信我无法理解,我甚至自己举例子一步步试了,完全没有问题!!令人费解!