Javascript 字谜算法问题的替代解决方案
我将正在解决的练习题粘贴在下面的照片中。我有一个答案是正确的,但我试着把它调高,我不知道为什么另一个答案不起作用。如有任何解释,将不胜感激,谢谢 我的解决方案有效Javascript 字谜算法问题的替代解决方案,javascript,algorithm,counter,anagram,Javascript,Algorithm,Counter,Anagram,我将正在解决的练习题粘贴在下面的照片中。我有一个答案是正确的,但我试着把它调高,我不知道为什么另一个答案不起作用。如有任何解释,将不胜感激,谢谢 我的解决方案有效 var string1 = "somethingb" var string2 = "omesnigthr" function validAn(string1,string2) { let obj1 = {} let obj2 = {} if (string1.len
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
}
在第二个不起作用的解决方案中,总是返回true。在第三个for循环中,您应该检查两个对象的键是否具有相同的值,如果没有,则返回false:
var string1=“somethingb”
var string2=“omesnigthr”
功能validAn(string1、string2)
{
设obj1={}
设obj2={}
if(string1.length!==string2.length){
返回错误
}
对于(string1的let char){
obj1[char]=(obj1[char]| | 0)+1
}
for(设string2的char){
obj2[char]=(obj2[char]| | 0)+1
}
用于(obj1中的var val){
如果(!(obj2中的val)| |(obj2[val]!==obj1[val])){
返回错误
}
}
返回真值
}
console.log(validAn(string1,string2))
最后一个for循环中的=
应该是=
。最后一个if语句应该有一个else返回false
。您是否尝试调试代码?手动跟踪一个简单的示例(例如validAn(“a”、“b”)
),查看发生了什么以及为什么返回true。