返回信息流小白一只,今天写这个算法题,整个人都要疯了,我的代码如下:
//字符串
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,发现问题所在,见图中红框,我看了半天都不知道是哪导致的问题,所以麻烦各位前端大神,瞅一眼我的程序,给点建议,万分感谢!
这是一条镜像帖。来源:北邮人论坛 / java-script / #3966同步于 2018/6/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖
【问题】一个基础前端题:求无重复最长子串
Lky0213
2018/6/28镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复