我想知道如何检查一个数字是否是Javascript中另一个数字的排列。
前:
perm(1234,2413); ---> True
perm(154,154); ---> True
perm(101,011); ---> False
perm(501,104); --->False
任何帮助将不胜感激:)
答案 0 :(得分:1)
我会这样做只是将每个输入转换为一个字符数组,然后对它们进行排序,然后检查是否相等。如果两个输入是彼此的排列,那么对它们进行排序将使它们处于相同的顺序,此时如果它们相同则很容易看到它们:
function perm(n1, n2) {
return String(n1).split("").sort().join("") === String(n2).split("").sort().join("");
}
console.log(perm(1234,2413)); // ---> True
console.log(perm(154,154)); // ---> True
console.log(perm(101,011)); // ---> False
console.log(perm(501,104)); // --->False

答案 1 :(得分:-4)
这是一段代码,它将两个数字转换为字符串,然后检查第二个数字是否包含在第一个数字的排列数组中。
排列函数来自这个问题:Permutations in JavaScript?。我做了不重复答案,我只是在网上提供了一段代码来换句字符串并且我恰当地引用了它。我的评论/解释的另一个功能和全部是我的。
var permArr = [],
usedChars = [];
function permute(input) {//Returns an array of all permutations of a string
var i, ch, chars = input.split("");
for (i = 0; i < chars.length; i++) {
ch = chars.splice(i, 1);
usedChars.push(ch);
if (chars.length == 0)
permArr[permArr.length] = usedChars.join("");
permute(chars.join(""));
chars.splice(i, 0, ch);
usedChars.pop();
}
return permArr
}
console.log(permute("HI!"))
//Returns permutations of "HI!"
function perm(firstnum, secondnum) {//My original code!
if (permute(firstnum.toString()).includes(secondnum.toString())) {//test if the second number, converted to a string, is in an array of permutations of the first number
return true
} else {
return false
}
}
//Converts both numbers to strings, checks if second number is a permutation of first number
console.log(perm(123, 321))//Returns true