用下面的代码提问。如果我正在减少对象值,当它达到零时,如果(!obj1letter)因为字母仍然存在于obj中,它是如何满足这个条件的,那么它的值就会下降。
function validAnagram(a, b){
if(a.length !== b.length){
return false;
}
if(a.length === 0 && b.length === 0 ){
return true;
}
let obj1 = {};
// add whatever parameters you deem necessary - good luck!
for(let i= 0; i<a.length; i++){
if(obj1[a[i]]>0){
obj1[a[i]]++
}else{
obj1[a[i]] = 1;
}
}
for(let i =0; i<b.length; i++){
let letter = b[i];
if(!obj1[letter]){
return false
} else {
obj1[letter]--
}
}
return true;
}
validAnagram('aza', 'zaz')发布于 2022-03-09 22:09:31
obj1[letter]有3例
letter不存在于obj1中,在这种情况下,它的计算结果是undefined.letter存在于obj1中,值none-zero.letter存在于obj1中,值为零。第二个案子很明显。字母存在并且值大于零,所以它会使我减少1。
案例一和案例三在JavaScript中被称为假值,并用!否定它们,将它们转换为true,这是有意义的。如果字母不存在或已经耗尽,因此值为零,则它不是一个恰当的行文。
换句话说,这个数值不会进一步下降到零。它将被捕捉到零,该算法返回false。
https://stackoverflow.com/questions/71416434
复制相似问题