1、最小编辑距离
namespace levenshtein
{
bool compare_char_(char c1, char c2)
{
return c1 == c2;
}
size_t ins_(char c)
{
return 1;
}
size_t del_(char c)
{
return 1;
}
size_t sub_(char c1, char c2)
{
return compare_char_(c1, c2) ? 0 : 2;
}
size_t compare_(const std::string& ref_s, const std::string& ref_l)
{
size_t len_s = ref_s.length();
size_t len_l = ref_l.length();
size_t** distance = new size_t*[len_s + 1];
for(size_t i = 0; i < len_s + 1; ++i)
{
distance[i] = new size_t[len_l + 1];
}
distance[0][0] = 0;
for(size_t i = 1; i < len_s + 1; ++i)
{
distance[i][0] = distance[i - 1][0] + del_(ref_s.at(i - 1));
}
for(size_t i = 1; i < len_l + 1; ++i)
{
distance[0][i] = distance[0][i - 1] + ins_(ref_l.at(i - 1));
}
for(size_t i = 1; i < len_s + 1; ++i)
{
for(size_t j = 1; j <