如何生成二进制字符串的所有可能子集?

mr.*_*bio 3 c++ algorithm

我有一个问题,我不知道如何解决它.

我有一个二进制字符串,我想生成所有可能的二进制子串.

示例:

input : 10111
output: 10000, 10100,00111,00001,10110 ...
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做,快速而聪明?

Lar*_*rry 6

魔术 - 虽然假设位掩码:

subset( int x ) 
    list = ()
    for ( int i = x; i >= 0; i = ( ( i - 1 ) & x ) )
          list.append( i )
    return list
Run Code Online (Sandbox Code Playgroud)

您可以使用相同的逻辑,虽然它涉及更多,使用二进制字符串.