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 |