以文本方式查看主题

-  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他又该是百分之多少呢?