`
kmplayer
  • 浏览: 512245 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

3.3 计算字符串的相似度

阅读更多
1,一步
增加,删除,或修改一个字符。
2,计算总步数,使得两个字符串相等。
注:增加一个字符和删除一个字符实质是一样的。

问题可以归结为:
(1)一步操作后,再将A[2,...]和B[1,...]变成相同字符串。
(2)一步操作后,再将A[1,...]和B[2,...]变成相同字符串。
(3)一步操作后,再将A[2,...]和B[2,...]变成相同字符串。

3,得到一种递归的方法:
#include<iostream>
#include<cstring>
using namespace std;

int minValue(int t1, int t2, int t3)
{
    int temp = t1 < t2 ? t1 : t2;
    return temp < t3 ? temp : t3;
}

int RecursiveDistance(char* b1, char* e1, char* b2, char* e2)
{
    if (b1 > e1)
    {
        if (b2 > e2)
            return 0;
        else
            return e2 - b2 + 1;
    }

    if (b2 > e2)
    {
        if (b1 > e1)
            return 0;
        else
            return e1 - b1 + 1;
    }
	//相等,往下走
    if (*b1 == *b2)
        return RecursiveDistance(b1 + 1, e1, b2 + 1, e2);
    else
    {
        int t1 = RecursiveDistance(b1, e1, b2 + 1, e2);
        int t2 = RecursiveDistance(b1 + 1, e1, b2, e2);
        int t3 = RecursiveDistance(b1 + 1, e1, b2 + 1, e2);
        return 1 + minValue(t1, t2, t3);
    }
}
int main()
{
    char* str1 = "abddffff";
    char* str2 = "abeddghf";
    cout << RecursiveDistance(str1, str1 + strlen(str1) - 1, str2, str2 + strlen(str2) - 1) << endl;
    return 0;
}
分享到:
评论

相关推荐

    基于串匹配方法的源代码复制检测技术研究

    ##### 3.3 基于字符串比较的方法 在结构度量法中,一种常见方法是将源代码转换为标记串形式,然后利用字符串匹配算法来度量相似度。具体来说: - **最长公共子序列(LCS)**:寻找两个序列中最长的共同子序列,该...

    PHP开发实战1200例源码

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则...

    mvel2.0语法指南.pdf

    - `strsim`: 比较两个字符串的相似度,返回一个百分数,例如 `"foobie" strsim "foobar"`。 - `soundslike`: 比较两个字符串的发音相似度,例如 `"foobar" soundslike "fubar"`。 - `~=`: 正则表达式匹配符,例如 `...

    计算机竞赛的算法培训手册

    编辑距离是衡量两个字符串相似度的一个指标,它定义了从一个字符串转换为另一个字符串所需的最少操作数。动态规划可以高效地计算出两个字符串之间的编辑距离。 **7.6 平铺计数** 平铺计数问题是一个有趣的动态规划...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    玩转数据结构 从入门到进阶

    在推荐系统中,则可以使用相似度计算算法来为用户推荐感兴趣的内容。 ### 五、总结 通过对上述知识点的详细介绍,我们可以看出数据结构的重要性。无论是对于初学者还是进阶学习者来说,掌握好数据结构都是至关重要...

    ACM模板(几乎全)

    - **字符串哈希**:利用哈希函数将字符串映射为整数,便于比较字符串的相似度。 - **KMP 算法**:一种高效的字符串匹配算法。 ### 计算几何 #### 4.1 直线交点 - 计算两条直线的交点坐标。 #### 4.2 判断线段...

    Algorithms Parallel and Sequential_2019.pdf

    - **定义**:寻找最短的字符串,使其包含所有给定的短序列。 - **应用**:简化基因测序问题。 #### 5.4 TSP算法 - **定义**:旅行商问题(Traveling Salesperson Problem),寻找访问一系列城市并返回起点的最短...

    数据清洗算法的研究与应用.pdf

    - **编辑距离**:一种衡量字符串差异程度的方法,可用于字段匹配。 - **缩写发现**:针对中文字段值的特点,提出的一种识别缩写的算法。 - **记录匹配**:通过计算记录间的相似度来识别重复项。 - **聚类算法**:...

    深入搜索引擎--海量信息的压缩、索引和查询

    字符串暴力匹配(Brute-force string matching) 用n-gram索引 循环字典(Rotated lexicon) 4.3 布尔查询(BOOLEAN QUERY) 合取查询(conjunctive query) 术语处理顺序 随机访问和快速查找 分块倒排索引 非合取...

    elastic search in action

    Elasticsearch支持多种字段类型,如字符串(String)、整型(Integer)、日期(Date)等,每种类型都有特定的应用场景。 ##### 3.3 数组与多字段(Array and Multi-Fields) - **数组(Array)**:允许在一个字段中存储多个值...

    BioPerl_bioinformatics

    - **标量变量**:用来存储单个值,如整数、字符串等。 - **数组变量**:用来存储一系列相同类型的值。 - **哈希表变量**:用来存储键值对。 ##### 3.1.1 标量变量 标量变量是最简单的数据类型,用`$`符号表示。...

    解密搜索引擎技术实战:Lucene&Java精华版

    - **3.1.3 网页编码转换为字符串编码**:介绍了编码转换的方法。 - **3.1.4 使用HTMLParser实现定向抓取**:讲解了如何使用HTML解析器实现目标内容的抓取。 - **3.1.5 使用正则表达式提取数据**:介绍了正则...

    数据挖掘概念与技术英文版pdf

    - **标称属性**:属性值是无序的符号或字符串。 - **序数属性**:属性值是有顺序的符号,但它们之间的差值没有意义。 - **区间属性**:属性值是有序的,并且具有固定的间隔度量标准,例如温度。 - **比率属性**:...

    Managing Gigabytes: Compressing and Indexing Documents and Images

    字符串暴力匹配(Brute-force string matching) 182 用n-gram索引 183 循环字典(Rotated lexicon) 184 4.3 布尔查询(BOOLEAN QUERY) 186 合取查询(conjunctive query) 187 术语处理顺序 188 随机访问和...

Global site tag (gtag.js) - Google Analytics