【发布时间】:2021-02-01 19:36:43
【问题描述】:
我已将我正在解决的练习题粘贴为下面的照片。我有一个正确的答案,但我尝试将其切换,但我不确定为什么替代答案不起作用。希望有任何解释,谢谢!
我的解决方案有效
var string1 = "somethingb"
var string2 = "omesnigthr"
function validAn(string1,string2)
{
let obj1 = {}
let obj2 = {}
if (string1.length !== string2.length){
return false
}
for(let char of string1){
obj1[char]= (obj1[char] || 0) + 1
}
for(let char of string2){
obj2[char]= (obj2[char] || 0) + 1
}
for(var val in obj1){
if(!(val in obj2)){
return false
}
if(obj2[val] !== obj1[val]){
return false
}
}
return true
}
我的解决方案不起作用
var string1 = "somethingb"
var string2 = "omesnigthr"
function validAn(string1,string2)
{
let obj1 = {}
let obj2 = {}
if (string1.length !== string2.length){
return false
}
for(let char of string1){
obj1[char]= (obj1[char] || 0) + 1
}
for(let char of string2){
obj2[char]= (obj2[char] || 0) + 1
}
for(var val in obj1){
if(val in obj2) && (obj2[val] == obj1[val])){
return true
}
}
return true
}
【问题讨论】:
-
最后一个for循环中的
==应该是!=。 -
最后一个 if 语句应该有一个
else return false。 -
您是否尝试调试代码?手动跟踪一个简单的例子(例如
validAn("a", "b")),看看会发生什么以及为什么它返回true。
标签: javascript algorithm counter anagram