leetcode上看到的题,就是给定一个字符串,找出不含重复字符的最长串的长度,例如abcabcc中的就是abc,bbbb中的就是b。

思路分析

这个如果用常规暴力计算当然比较麻烦,看别人的思路很厉害,用的是滑动窗口的思路去解决的。

滑动窗口就是用两个变量标识位置,分别为i和j,其中j只负责进,i负责出,如果发现一个元素是新的,那么j++,进一个,如果不是新的i++,出一个,具体演示过程如下:

代码如下:

var move=function(str){
    var rs={},i=0,j=0,n=str.length,t='';
    while(i<n&&j<n){
        if(rs[str.charAt(j)]){//已经存在
            delete rs[str.charAt(i)];
            i++;
        }else{
            rs[str.charAt(j)]=true;
            j++;
            t=t.length>Object.keys(rs).join('').length?t:Object.keys(rs).join('');
        }
        console.log(Object.keys(rs).join(''));
        }
    return t;
}
回到顶部
我要评论

所有评论

返回
邮箱:
绑定
取消
×

我要评论

回复:

昵称:(昵称不超过20个字)

图片:

邮箱:
绑定邮箱后,若有回复,会邮件通知。
提交
还可以输入500个字