Login
网站首页 > 文章中心 > VB6

VB6计算两个字符串之间的相似度源码分享

作者:小编 更新时间:2023-06-27 16:49:24 浏览量:139人看过

Visual Basic 6 迷你版安装包2023

软件介绍:本站发布这款安装包是VB6迷你版(不是精简版)迷你版在WIN11等高级别系统下不会出错,当前最便捷的安装版本

Option Explicit

' 计算两个字符串的相似度

Public Function CalculateSimilarity(ByVal str1 As String, ByVal str2 As String) As Double

    Dim distance As Integer

    Dim maxLength As Integer

    Dim similarity As Double '获取两个字符串的编辑距离

    distance = EditDistance(str1, str2) '获取较长字符串的长度

    maxLength = IIf(Len(str1) > Len(str2), Len(str1), Len(str2)) '计算相似度

    similarity = 1 - (distance / maxLength)    

    CalculateSimilarity = similarity

End Function

' 计算两个字符串的编辑距离

Private Function EditDistance(ByVal str1 As String, ByVal str2 As String) As Integer

    Dim len1 As Integer

    Dim len2 As Integer

    Dim matrix() As Integer

    Dim i As Integer

    Dim j As Integer

    Dim cost As Integer    

    len1 = Len(str1)

    len2 = Len(str2)    

    ReDim matrix(len1, len2) '初始化矩阵

    For i = 0 To len1

        matrix(i, 0) = i

    Next    

    For j = 0 To len2

        matrix(0, j) = j

    Next '计算编辑距离

    For i = 1 To len1

        For j = 1 To len2

            If Mid(str1, i, 1) = Mid(str2, j, 1) Then

                cost = 0

            Else

                cost = 1

            End If

            

            matrix(i, j) = Min3(matrix(i - 1, j) + 1, matrix(i, j - 1) + 1, matrix(i - 1, j - 1) + cost)

        Next

    Next '返回编辑距离

    EditDistance = matrix(len1, len2)

End Function

' 返回三个数中的最小值

Private Function Min3(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer) As Integer

    Dim min As Integer    

    min = a    

    If b < min Then

        min = b

    End If    

    If c < min Then

        min = c

    End If    

    Min3 = min

End Function


版权声明:倡导尊重与保护知识产权,本站有部分资源、图片来源于网络,如有侵权,请联系我们修改或者删除处理。
转载请说明来源于"土嘎嘎" 本文地址:http://www.tugaga.com/jishu/vb/703.html
<<上一篇 2023-06-27
下一篇 >> 2023-06-27

编辑推荐

热门文章