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

    思路分析

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

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

    代码如下:

    1. var move=function(str){
    2.     var rs={},i=0,j=0,n=str.length,t='';
    3.     while(i<n&&j<n){
    4.         if(rs[str.charAt(j)]){//已经存在
    5.             delete rs[str.charAt(i)];
    6.             i++;
    7.         }else{
    8.             rs[str.charAt(j)]=true;
    9.             j++;
    10.             t=t.length>Object.keys(rs).join('').length?t:Object.keys(rs).join('');
    11.         }
    12.         console.log(Object.keys(rs).join(''));
    13.         }
    14.     return t;
    15. }
    回到顶部
    我要评论

    所有评论

      相关文章