XZ_iOS之LD算法实现字符串相似度的比较

目录

思路

OC的代码实现:

Swift版的代码实现:


例如:

文字段1:“初始化第一列”和 文字段2:“初始化第一行”,这两段文字的相似程序比较,可以看出这两句只要一个字不同,那相似程度就是  1- 1/6 = 5/6 ≈ 0.833333。

相似程度的计算公式就是:相似程度(百分比) = 1 - (不同的字符个数)/MAX(文字1,文字2)

注意:不同的字符个数,指的是同一个位置上,即相同下表。

思路

1、计算编辑距离:

       1>因为OC不能定义确定长度的二维数组,所以,我先定义了一个 len1 * len2 的二维数组;

       2>通过LD算法,计算编辑距离;

 2、通过编辑距离,计算相似度。

OC的代码实现:

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSString *str1 = @"GGATCGA";// @"GGATCGA"; @"初始化第一列";
    NSString *str2 = @"GAATTCAGTTA";//@"GAATTCAGTTA"; @"初始化第一行";
    
    CGFloat similar = [self calSimilar:str1 str2:str2];
    NSLog(@"%f",similar);
}

//  计算编辑距离
- (CGFloat)calDistance:(NSString *)str1 str2:(NSString *)str2 {
    
    int len1 = (int)str1.length;
    int len2 = (int)str2.length;
    
    if (len1 == 0) { 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值