以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教两个字符串比较相似度思路? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40422) |
-- 作者:苍风霁月 -- 发布时间:2013/9/18 16:48:00 -- 请教两个字符串比较相似度思路? 比如:abcdef 与 cedmnk 有50%字符相似,请教设计思路?字符串还有中文的,又该如何考虑? [此贴子已经被作者于2013-9-18 16:50:45编辑过]
|
-- 作者:Bin -- 发布时间:2013/9/18 17:01:00 -- 比较笨没效率的方法是, 双重循环 一个个字符判断! |
-- 作者:lsy -- 发布时间:2013/9/18 17:05:00 -- Dim sa As String = "abcdek" Dim sb As String = "cedmnk" Dim c As Integer For i As Integer = 0 To sa.Length - 1 For j As Integer = 0 To sb.Length - 1 If sa(i) = sb(j) Then c + = 1 End If Next Next MessageBox.Show("有百分之" & Format(c/sa.Length*100,"#0.00") & "字符相同") |
-- 作者:苍风霁月 -- 发布时间:2013/9/18 17:06:00 -- 有没有聪明点的办法也?我的产品目录不重复的有两万余种,那每遇一产品,就要循环判断两万次基础上,循环字符串个数的比较! |
-- 作者:Bin -- 发布时间:2013/9/18 17:12:00 -- 这个死很多脑细胞都不行,你将就着用吧. |
-- 作者:lsy -- 发布时间:2013/9/18 17:17:00 -- 把产品目录传上来,看看其中有无规律,根据规律减少循环判断的次数。 |
-- 作者:逛逛 -- 发布时间:2013/9/18 20:08:00 -- 以下是引用苍风霁月在2013-9-18 17:06:00的发言:
有没有聪明点的办法也?我的产品目录不重复的有两万余种,那每遇一产品,就要循环判断两万次基础上,循环字符串个数的比较! 所以才会把产品分类规则和编码规则提到一个相对高的高度。 |
-- 作者:有点甜 -- 发布时间:2013/9/18 20:15:00 -- 楼主是不是想问,一个字符串包含另一个字符串的多少个字符? Dim sa As String = "abcdek" Dim sb As String = "cedmnk" Dim count As Integer For i As Integer = 0 To sa.Length - 1 If sb.Contains(sa(i)) Then count += 1 End If Next msgbox(count) |
-- 作者:程兴刚 -- 发布时间:2013/9/18 22:16:00 -- 楼主提问的思路有问题,所谓的50%,是建立在谁与谁的基础上,如果这样
比如:abcdef 与 cedmnkKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFFFFYYYYYYYYYYY 还是50%吗? 亦或者:abcdefefefhuicxbvyucvbdflgfbldvjdvds 和cedmnk他又该是百分之多少呢? |