1と0の数が同じである1と0の文字列があります。私はそれを格納するために必要なビット数の点でより小さい数にこれを圧縮したいと思います。また、圧縮形式と非圧縮形式との間の変換は、多くの作業を必要としない必要がある。0と同じ数の1を含む1と0の文字列を圧縮する
たとえば、すべての可能な文字列を順序付けし、番号を付けて圧縮したデータにすると、あまりにも多くの作業が必要になります。
簡単な解決策は、圧縮されたデータを、文字列が長さnの文字列の最初のn-1文字だけにすることです。圧縮されたデータと解凍されたデータの間の変換は簡単ですが、圧縮はほとんどなく、文字列ごとに1ビットしかありません。
偶数の長さの文字列に一般化できるこのプロパティ(1と同じ数)を持つ文字列を圧縮するアルゴリズムが必要です。私はまた、上記の方法以上に圧縮したいと思います。
ありがとうございました。
"たとえば、すべての可能な文字列を順序付けし、それらの番号を付けて、この番号を圧縮されたデータにすることは、あまりにも多くの作業になります。バイナリ文字列を整数に変換するのは大変ですか? – Blorgbeard
[Java one-liner](http://stackoverflow.com/questions/17833463/how-do-you-convert-a-binary-number-to-a-biginteger-in-java) – Blorgbeard
いいえ、発注するすべての可能な文字列はあまりにも多くの作業です。たとえば、文字列の長さが10であるとすると、0000011111を最初の文字列にすると、0に圧縮され、2番目の文字列は0000101111になります。これらの間を変換するには多くの作業が必要です。あなたが提案したようにバイナリ文字列を整数に変換すると、データは圧縮されませんが、それでも同じ量のビットを占有します。 – mathew