行の長さの降順で並べ替えられた文字列の大規模なテキストファイルがあります。すべてを文字列配列にロードし、それぞれに対してLevenshteinを実行し、グループUUIDを作成して、それを配列に入れたいと思います。したがって、2番目の配列はハッシュテーブルになります。ここで、キーは前の文字列のメモリアドレスであり、値はUUIDです。
最高のパフォーマンスを得るために、文字列を反復処理するときにポインタ演算を実行したいと思います。
レーベンシュタイン距離を何十億回も繰り返した後、グループのUUID、コロン、および元のテキストファイルの行だけの内容の別のテキストファイルを入力したいと思います。
私はウィキブックスのレーベンシュタインアルゴリズムを持っています:
template<class T> unsigned int levenshtein_distance(const T &s1, const T & s2) {
const size_t len1 = s1.size(), len2 = s2.size();
vector<unsigned int> col(len2+1), prevCol(len2+1);
for (unsigned int i = 0; i < prevCol.size(); i++)
prevCol[i] = i;
for (unsigned int i = 0; i < len1; i++) {
col[0] = i+1;
for (unsigned int j = 0; j < len2; j++)
col[j+1] = min( min( 1 + col[j], 1 + prevCol[1 + j]),
prevCol[j] + (s1[i]==s2[j] ? 0 : 1) );
col.swap(prevCol);
}
return prevCol[len2];
}
私はいくつかのC++、いくつかのC、Obj-Cのロードを実行しました。私はWindows7を使用しています。これを行うことをどのように推奨しますか?どんな種類の文字列配列?提供された関数で使用されるテキストファイルからテキスト文字列を変換するにはどうすればよいですか?
文字列がC++で私を混乱させるので、私は基本的にできるだけ多くのヒントを探しています。ああ、C ++もそうです!
ありがとう