Jaccard距离
记录一下前几天面试遇到的一个题,计算两个字符串的Jaccard距离:
1.Jaccard系数的定义是:两串交集的长度比上并集的长度,当A、B串都是空串的时候,系数为1:
Jaccard距离的定义是1减去Jaccard系数:
- c++中对集合里的元素取交集和并集的操作分别是:
set_intersection、set_union,注意两个输入串必须是按照相同排序规则排好序的串;插入的时候选择使用尾部插入迭代器back_iterator对空的vector做插入;
- 在计算Jaccard距离之前,我先排除了串中的空白符,用到
::isspace这个c中的全局变量;结合c++中string的方法erase删除掉空白的尾部。
- 注意的是范围的时候对其中集合长度转换为double类型,避免整型相除结果为1或0.
1 | // merge algorithm example |