如何解决七巧板算法问题的替代解决方案
我在下面的照片中粘贴了我要解决的练习问题。我有一个正确的答案,但是我尝试将其切换,但不确定为什么其他答案无效。希望得到任何解释,谢谢!
我有效的解决方案
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"
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 false
}
}
return true
}
console.log(validAn(string1,string2));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。