BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java-script / #3966同步于 2018/6/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖

【问题】一个基础前端题:求无重复最长子串

Lky0213
2018/6/28镜像同步4 回复
小白一只,今天写这个算法题,整个人都要疯了,我的代码如下: //字符串 s = "pwwkew"; //l1记录最长子串的长度 var l1 = 0; //res记录最长子串 var res = ""; inner(s); //递归方法 function inner(a){ //把每次参数打印出来(为了调试来着) console.log("参数为:"+a); //临时子串存储 var tem = ""; //临时存储子串长度 var l2 = 0; for(var i = 0; i < a.length;i++){ //如果子串不包含接下来的字符,则顺序加入 if(tem.indexOf(a.charAt(i)) == -1){ tem += a.charAt(i); console.log(tem); l2 ++; //如果子串一直到最后无重复,则判断长度 if(i == (a.length -1)){ if(l2 > l1){ l1 = l2; res = a; } } }else{ console.log("出现重复字符,更改临时子串"); //出现子串长度更长的子串 if(l2 > l1){ l1 = l2; res = tem; } //截取重复字符之后的字符串递归 inner(a.substring(tem.indexOf(a.charAt(i)) + 1)); } } } //打印最长子串长度 console.log(l1); 这题的答案应该是3,但我的总是4,我加了几个console.log,发现问题所在,见图中红框,我看了半天都不知道是哪导致的问题,所以麻烦各位前端大神,瞅一眼我的程序,给点建议,万分感谢!
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
z574690129机器人#1 · 2018/6/28
递归返回之后,继续你的for循环喽。。
Lky0213机器人#2 · 2018/6/28
好像明白了,,感觉是不是没有把递归放for循环里的操作? 【 在 z574690129 的大作中提到: 】 : 递归返回之后,继续你的for循环喽。。
z574690129机器人#3 · 2018/6/28
看情况吧。。反正见过的不多 【 在 Lky0213 的大作中提到: 】 : 好像明白了,,感觉是不是没有把递归放for循环里的操作? :
Lky0213机器人#4 · 2018/6/28
哦哦,谢谢谢谢 【 在 z574690129 的大作中提到: 】 : 看情况吧。。反正见过的不多