1

パターンに基づいてランレングス エンコーディングを実行する最もクリーンな方法を見つけようとしています。目標は、いくつかの同じパターンで構成される部分文字列を因数分解することにより、文字列を圧縮することです。

元の文字列:

start{3}{3}{3}{3}end

ご覧のとおり、「{3}」のパターンは 4 つあります。{3}4 " " パターンの実行を として表現することで、この String を圧縮することができ$4{3}ます。

取得したい圧縮文字列:

start$4{3}end

方法を試しましたString.replaceAll(regex, replacement)myString.replaceAll("\\{([^<])\\}", "$1")パターン全体をその値のみで置き換えることができることは知っていますが、正規表現を使用して同じパターンのランレングスを検出してカウントする方法が見つかりません。

正規表現を使用することは良い考えですか、それともこれを行うための「より良い」方法はありますか?

4

2 に答える 2

2

java.util.zip.GZIPInputStreamandjava.util.zip.GZIPOutputStreamと組み合わせてByteArrayInputStream、文字列を gzip/gunzip することもできますByteArrayOutputStream。これは、おそらく独自の圧縮アルゴリズムを作成するよりも優れています (圧縮するデータに関する知識を使用できない場合)。

于 2014-09-08T14:59:19.343 に答える