计算具有两个不同数字的字符串的排列数

时间:2018-01-22 10:35:31

标签: permutation

如何计算000000和999999之间只包含两个不同数字的数字?

例如000001可以算作一个。 002200,11222,1100000也是如此。但是112233包含三个不同的数字,因此无法计算。

由于

2 个答案:

答案 0 :(得分:3)

让我们简化问题。

假设我们需要找到仅01的所有数字排列。所以可能的组合可以是000011,000001,001110等。因为需要有2个不同的数字可以有以下组合:

[Zeroes, Ones]: {1,5},{2,4},{3,3},{4,2},{5,1}

这意味着1个零5个将具有:000001,000010,000100,001000,010000,100000

因此,如果有Z个零,那么 6 C Z 组合与 Z 零和 6 - Z

由于 Z 可以有 1-5 的值,我们可以说有 5 Σ Z = 1 6 C Z 可能的数字,0,1组合,至少1 0 & 1 一个

现在回到原来的问题因为有10个数字,我们需要两个不同的数字,所以 10 C 2 45 组合将是那里有:{0,1},{0,2} ..... {1,2} ....

所以答案是 10 C 2 * 5 Σ Z = 1 6 C <子>ž

答案 1 :(得分:0)

由于您没有指定任何特定的编程语言,我使用了正确评论的javascript。希望它可以帮到你。

 var counter = 0; // this counts if it contains exactly two different digits only
 for(var i=10000; i<10005 ; i++) { // change the loop values as you need
     var x = i.toString(); // converting number to string which makes easy to split
     var chars = x.split(''); // split characters and keep in an array
     var uniqueChars = Array.from(new Set(chars)); // get distinct characters from array
     if(uniqueChars.length == 2){ // check if it contains exactly two elements
         counter++;
     }
 }
 console.log(counter);