【发布时间】:2013-08-23 09:11:07
【问题描述】:
我正在考虑这个问题,但不知道从哪里开始>>
我们得到一个二进制字符串,除了暴力破解之外,还有其他可能的方法来找到它所包含的不同数字的数量(它们作为给定字符串中的子字符串的二进制表示)及其总和。
例如:
如果给定的二进制是:“1101”,那么它可能包含的数字是 -
0,01,10,11,101,110,1101
十进制:
0, 1, 2, 3, 5, 6, 13
总和 = 0 + 1 + 2 + 3 + 5 + 6 + 13 = 30
【问题讨论】:
-
暴力破解是指找到给定数字中二进制数的所有排列/组合吗?
-
该字符串的最大大小是多少。蛮力将需要 n*(n-1)/2 次迭代,即 O(n^2)。是不是太长了?
-
@HAL 我所说的蛮力是查看所有可能的长度字符串并存储我们到目前为止看到的数字,并比较到目前为止是否看到了这个数字。
-
@bytefire>> 我正在寻找一种时间复杂度较低的算法。
-
是所有可能长度的所有可能子串。 111 未作为子字符串提及。
标签: algorithm bit-manipulation bit