如何查找一个数字是否是javascript中另一个数字的排列

时间:2018-05-18 16:49:23

标签: javascript

我想知道如何检查一个数字是否是Javascript中另一个数字的排列。

前:

perm(1234,2413); ---> True
perm(154,154); ---> True
perm(101,011); ---> False
perm(501,104); --->False

任何帮助将不胜感激:)

2 个答案:

答案 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