Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无重复字符的最长子字符串_Javascript_Arrays_String_Time Complexity_Asymptotic Complexity - Fatal编程技术网

Javascript 无重复字符的最长子字符串

Javascript 无重复字符的最长子字符串,javascript,arrays,string,time-complexity,asymptotic-complexity,Javascript,Arrays,String,Time Complexity,Asymptotic Complexity,我在最近的一次采访中被问到这个问题。我需要找到最长的子字符串,不重复字符 给定“abcabcbb”,答案是“abc”,长度为3 给定“bbbbb”,答案是“b”,长度为1 给定“pwkew”,答案是“wke”,长度为3 这就是我想到的,我认为它是正确的,但面试官没有留下深刻印象,说我的解决方案可能不适用于所有情况 var str=“pwwkew”; var longSubstring=函数(str){ var obj={};//映射对象 var计数=0; var c=[];//count数组以

我在最近的一次采访中被问到这个问题。我需要找到最长的
子字符串
,不重复字符

给定“
abcabcbb
”,答案是“
abc
”,长度为3

给定“
bbbbb
”,答案是“
b
”,长度为1

给定“
pwkew
”,答案是“
wke
”,长度为3

这就是我想到的,我认为它是正确的,但面试官没有留下深刻印象,说我的解决方案可能不适用于所有情况

var str=“pwwkew”;
var longSubstring=函数(str){
var obj={};//映射对象
var计数=0;
var c=[];//count数组以保持到目前为止的计数
对于(变量i=0;ilog(longSubstring(str))//打印3
我想你的代码的问题是,当整个句子中没有重复的字母时,它会变得混乱。正如其中一条评论中提到的,“abc”不会产生正确的结果。我的方法与你的略有不同,如下所示:

var str=“pwwkew”,
data=Array.prototype.reduce.call(str,(p,c)=>(p.test.includes(c)?p.test=[c]
:p.test.length>=p.last.length?p.test=p.last=p.test.concat(c)
:p.测试.推动(c)
,p),{last:[],test:[]}),
结果=data.last.length;
控制台日志(数据);

控制台日志(结果)什么是“aaaabbaabbaabbaabbaabbaabbbb”意味着返回?@e4en它应该返回2。任何ab,ba…我的代码都适用于此too@WildWidow。如果输入为“abc”,则输出是什么。它返回-Infinity@WildWidow:这篇文章似乎有一个更好的方法。请看这篇文章。你的解决方案可能运行良好,但我不认为这是O(n)时间解决方案。在obj
操作中不执行n次
str[i]。