带有严格相等操作符问题的Javascript if语句



我试图分析这个解决方案的leetcode问题"392。Subsequence"如raunak1508先生所提议。我对第一个if语句的含义感到困惑。if(j===t.length)。我相信这部分代码决定了何时返回false或继续执行下一个if语句if(s[i]===t[j])

谁能告诉我我想的是对的吗?我认为if(j===t.length)背后的上下文意味着,如果var j包含var t的所有特定值,即"ahbgdc"然后返回false....

…但是,如果第二个if语句if(s[i]===t[j])通过生成匹配先完成,则返回true。在这种情况下,第一个if语句if(j===t.length)甚至没有机会返回false。

//"abz" will return false
let s="abz"
let t="ahbgdc"
function isSubsequence(s, t) {
let i=0;                               
let j=0;                             
while(i<s.length){        
if(j===t.length){ 
console.log("t.length is  " + t.length)
return false;
}
if(s[i]===t[j]){                 
i++;
}
j++;
console.log("j is  "+ j);

}
return true;                              
}
console.log(isSubsequence(s, t));

let s="abc"
let t="ahbgdc"
function isSubsequence(s, t) {
let i=0;                                
let j=0;                               
while(i<s.length){             
if(j===t.length){ 

return false;
}
if(s[i]===t[j]){                   
i++;
}
j++;
console.log("j is  "+ j);
console.log("t.length is  " + t.length)
}
return true;                               
}
console.log(isSubsequence(s, t));

这里j只是t的currentIndex,因为我们在t中向前移动,而is做同样的事情

let s="abz"
let t="ahbgdc"

最初i = 0j = 0表示它们都分别指向s和t的第一个字符索引

为true的条件是i < s.length到达i === 2,j === t.length到达j === 7

这仅仅意味着我们应该在越过t的最终字符之前到达s的最终字符,因为t[7]undefined并且在t字符串之外,所以没有希望为真,因此我们返回false;

最新更新