在javascript中使用split将所有可能的组合变成一个数字字符串?

在javascript中使用split将所有可能的组合变成一个数字字符串?,javascript,string,algorithm,permutation,Javascript,String,Algorithm,Permutation,我有一串数字“123456”,我想用所有可能的方法把它们分开 所以 我所尝试的 在len-1上循环,并在每个索引上拆分,但从逻辑上讲,它忽略了许多可能的场景。您可以尝试下面这样的递归函数 <script lang="javascript"> // Split string into all combinations possible function splitAllWays(result, left, right){ // Push current left +

我有一串数字“123456”,我想用所有可能的方法把它们分开

所以

我所尝试的


在len-1上循环,并在每个索引上拆分,但从逻辑上讲,它忽略了许多可能的场景。

您可以尝试下面这样的递归函数

<script lang="javascript">

  // Split string into all combinations possible
  function splitAllWays(result, left, right){
    // Push current left + right to the result list
    result.push(left.concat(right));
    //document.write(left.concat(right) + '<br />');

    // If we still have chars to work with in the right side then keep splitting
    if (right.length > 1){
      // For each combination left/right split call splitAllWays()
      for(var i = 1; i < right.length; i++){
        splitAllWays(result, left.concat(right.substring(0, i)), right.substring(i));
      }
    }

    // Return result
    return result;
  };

  var str = "123456";
  var ans = splitAllWays([], [], str);

</script>

我认为这是正确的结果(32种组合)。有人能确认吗?

有什么不明显的吗?我想用所有可能的方法拆分字符串。最大拆分是
字符串。长度-1
<123456是
11000
,因为第一个字符和第二个字符之间有一个空格,第二个字符和第三个字符之间有一个空格,但在3-4、4-5和5-6之间没有空格
123456
10000
123456
00011
另一种看待它的方式,所有方式都有一个拆分+所有方式都有两个拆分+所有方式都有三个拆分…+所有的方法都有len-1分裂。谢谢,我想知道如果不使用二进制数,这是一个很好的答案。我想添加一个小的修改,以防输入需要是一个数组。在这种情况下,函数的第一行是:
result.push(left.concat(right.join(“”)),循环中的行将是:
splitAllWays(result,left.concat(right.slice(0,i.join)(“”)),right.slice(i,right.length))
<script lang="javascript">

  // Split string into all combinations possible
  function splitAllWays(result, left, right){
    // Push current left + right to the result list
    result.push(left.concat(right));
    //document.write(left.concat(right) + '<br />');

    // If we still have chars to work with in the right side then keep splitting
    if (right.length > 1){
      // For each combination left/right split call splitAllWays()
      for(var i = 1; i < right.length; i++){
        splitAllWays(result, left.concat(right.substring(0, i)), right.substring(i));
      }
    }

    // Return result
    return result;
  };

  var str = "123456";
  var ans = splitAllWays([], [], str);

</script>
123456
1,23456
1,2,3456
1,2,3,456
1,2,3,4,56
1,2,3,4,5,6
1,2,3,45,6
1,2,34,56
1,2,34,5,6
1,2,345,6
1,23,456
1,23,4,56
1,23,4,5,6
1,23,45,6
1,234,56
1,234,5,6
1,2345,6
12,3456
12,3,456
12,3,4,56
12,3,4,5,6
12,3,45,6
12,34,56
12,34,5,6
12,345,6
123,456
123,4,56
123,4,5,6
123,45,6
1234,56
1234,5,6
12345,6