主题:判断字符串相似度
#include <algorithm>
using namespace std;
float semblance (string a, string b)
{
if (a.size () > b.size ())
swap<string> (a, b);
float step = 1.0 * b.size () / b.size ();
float start = 0.0;
int samenum = 0;
for (int i = 0; i < a.size (); ++i) {
for (int j = start; j < start+4*step && j < b.size (); ++j)
if (a[i] == b[j]) {
samenum++;
break;
}
start += step;
}
return 1.0*samenum/b.size ();
}
这个应该算蒙特卡罗方法吧? 方法是从a串中取字符,估计它在b串中的大致范围.
using namespace std;
float semblance (string a, string b)
{
if (a.size () > b.size ())
swap<string> (a, b);
float step = 1.0 * b.size () / b.size ();
float start = 0.0;
int samenum = 0;
for (int i = 0; i < a.size (); ++i) {
for (int j = start; j < start+4*step && j < b.size (); ++j)
if (a[i] == b[j]) {
samenum++;
break;
}
start += step;
}
return 1.0*samenum/b.size ();
}
这个应该算蒙特卡罗方法吧? 方法是从a串中取字符,估计它在b串中的大致范围.