我有一个按行长降序排列的大量字符串文本文件。我想将整个东西加载到一个字符串数组中,对每个元素执行 Levenshtein,创建一个组 UUID 并将其放入一个数组中。所以第二个数组将是一个哈希表,其中键是前一个字符串的内存地址,值是 UUID。
我想在迭代字符串时执行指针运算以获得最佳性能。
在迭代地进行 levenshtein ga-zillions 之后,我想填充另一个文本文件,其内容很简单,即组的 UUID、冒号和原始文本文件中的行。
我有 wikibooks 中的 levenshtein 算法:
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。我使用的是 Windows 7。您如何建议我这样做?什么样的字符串数组?如何转换文本文件中的文本字符串以供提供的函数使用?
我基本上是在寻找尽可能多的技巧,因为字符串让我在 C++ 中感到困惑。哦,C++ 也是如此!
谢谢