2012-03-01 14 views
0

私は2つの文字列を効率的に比較するアルゴリズムを探しています。私が現在行っていることは、文字列を最初に圧縮し、圧縮された文字列を比較することです(文字列が非常に長いため、メモリエラーを避けるためです)。C/C++で符号化された文字列圧縮アルゴリズム

文字列には[0-9]、x、o 、バツ。

圧縮ルールは、圧縮する必要のある特定の反復トークンに似ています。例えば: 「O」トークンの終わりであり、それは1桁以上の数字(0-9}のシーケンスの終了時に常に来て、「x」は乗算を示すことである等

例: 1 8o8o80べき8oXXXXが804xX 3 64o8o8o16o16oとして圧縮されなければならない2. 3x80のような圧縮文字列の任意の既存のアルゴリズムがある場合、私は疑問に思う

.. 64o2x8o2x16oなどである必要があり、圧縮さ?

ヘルプのいずれかの種類を理解するだろうこれを整理するためにありがとう!!

+0

単に比較するよりも圧縮して比較するほうが速いのですか? – Jon

+0

純粋な比較で何が間違っていますか? 2つの文字列ですでに使用されているメモリより多くのメモリを使用することはなく、より高速な(潜在的により正確な)可能性があります。 – Nim

+0

@Jon:圧縮されていない文字列。 – Raj

答えて

1

あなたはrun length encoding algorithmを探しています。 いくつかの実装が見つかりましたhere

+0

はい、彼は奇妙な "ターミネーター"文字を持っているので、アルゴリズムを変更する必要があります。 – vulkanino

+0

ありがとうスタッカー。しかし、RLEのデフォルトの実装では、トークンはcharですが、私にとってはcharのセットです。また、そのアルゴにはチャーを終わらせるという概念はありません。 – Raj

+0

期待通りの圧縮アルゴリズムが見つかりません。だから私は私のために働くものを実装するつもりです。 – Raj

関連する問題