![](/img/trans.png)
[英]Converting string of 1s and 0s into binary value, then compress afterwards ,PHP
[英]Compressing a string of 1's and 0s containing the same number of 1's as 0's
我有一个1和0的字符串,其中1和0的数字是相同的。 我想将它压缩成一个数字,该数字在存储它所需的位数方面较小。 此外,在压缩形式和非压缩形式之间进行转换不需要大量工作。
例如,对所有可能的字符串进行排序并将它们编号并将该数字作为压缩数据将会起到太多作用。
一个简单的解决方案是允许压缩数据只是字符串长度为n的字符串的前n-1个字符。 压缩和解压缩数据之间的转换很容易,但这提供了很少的压缩,每串只有一位。
我想要一个算法,用这个属性压缩一个字符串(相同数量的1和0),可以推广到任何偶数长度的字符串。 我还希望它压缩比上述方法更多。
感谢帮助。
这是一个组合问题,一次取k个N项。
在您的评论中,作为长度10的示例,一次取5,意味着只有252个独特的模式。 哪个可以适合8位值,而不是10位值。 见: WIKI:组合
从0-251扩展索引值,这里有一些例子:
SEE: 从n返回k个元素的所有组合的算法
在提取时,您可以使用提取的值来设置重建值中的位位置,即每次扩展的O(1)时间。 如果列表不是数百万+,则可以预先计算查找表,将索引值转换为解码值要快得多。 IE:构建所有可能的列表,并查找翻译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.