前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Delphi源码:编辑长求字符串相似度

Delphi源码:编辑长求字符串相似度

作者头像
全栈程序员站长
发布2021-06-22 19:27:44
7960
发布2021-06-22 19:27:44
举报

Delphi源代码下载

{

 说明 LD(s,t:WideString):Integer 返回两个字符串的编辑长

 D= 编辑长

 L = 字符串中最长串的长度,当L=0时,L取1

 两个字符串的相似度=1 – D / L , 区间在0~1之间,0表示不相似,1表示完全相同

}

unit LDA;

{Levenshtein Distance Algorithm}

interface

function LD(s,t:WideString):Integer;

implementation

function Minimum(a,b,c:Integer):Integer; begin   Result:=a;   if b<Result then Result:=b;   if c<Result then Result:=c; end;

function LD(s,t:WideString):Integer; var   d:array of array of Integer;   n,m:Integer;   i,j:Integer;   s_i,t_j:WideChar;   cost:Integer; begin   n:=Length(s);   m:=Length(t);   if n=0 then   begin     Result:=m;     Exit;   end;   if m=0 then   begin     Result:=n;     Exit;   end;   //数据初始化   SetLength(d,n+1);   for i:= 0 to n do SetLength(d[i],m+1);   for i:= 0 to n do d[i][0]:=i;   for j:= 0 to m do d[0][j]:=j;   //   for i:= 1 to n do   begin     s_i:=s[i];     for j:= 1 to m do     begin       t_j:=t[j];       if s_i=t_j then cost:=0       else cost:=1;       d[i][j]:=Minimum(d[i-1][j]+1,d[i][j-1]+1,d[i-1][j-1]+cost);     end;   end;   Result:=d[n][m]; end;

end.

调用代码片断:

var   d,l:Integer; begin   d:=LD(s.Text,t.Text);   l:=Length(s.Text);   if l<Length(t.Text) then l:=Length(t.Text);   if l=0 then l:=1;     lbResult.Caption:=IntToStr(d);//得到编辑长   lbRes.Caption:=FloatToStr(1-d/l);//计算相似度 end;

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/101189.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档