如何生成n长度二进制字符串的所有可能状态?

时间:2017-10-13 18:53:27

标签: javascript

我知道这里有很多这样的问题,但我只读了其中的6个,它们主要用于生成任意长度(var list = generateStates(3); // -> ['000', '111', '011', '001', '100', '110', '101', ... ] )和/或仅有的字符集的所有组合提供的字符串或列表的长度。

我试图弄清楚如何做是代表给定长度的所有可能的二进制字符串(在基数2中编码),在阅读了我能找到的所有问题之后,我就会这样做。仍然无法弄清楚应该如何设计功能。

我的目标是拥有以下功能:

didReceiveRemoteNotification

棘手的部分是我认为我需要在没有递归的情况下执行此操作,因为我希望使用更长的二进制字符串来执行此操作,并且递归不能保持那么深(不超过最大调用堆栈)。

2 个答案:

答案 0 :(得分:1)

尝试

从给定的n = 3开始并采用以下值

Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)

考虑到这一点,您可以通过添加一个来从给定组合生成下一个值。 (或者如果你拿一个数组,那么执行binary decimal ------ ------- 000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7 并构建一个新数组。)

答案 1 :(得分:1)

function generateStates(n){
  var states = [];

  // Convert to decimal
  var maxDecimal = parseInt("1".repeat(n),2);

  // For every number between 0->decimal
  for(var i = 0; i <= maxDecimal; i++){
    // Convert to binary, pad with 0, and add to final results
    states.push(i.toString(2).padStart(n,'0'));
  }

  return states;
}