编程之美读书笔记_3.3_计算字符串的相似度
来源:互联网 发布:淘宝卖家如何设置套餐 编辑:程序博客网 时间:2024/05/01 02:55
3.3_计算字符串的相似度
和计算两字符串的最长公共子序列相似。
设Ai为字符串A(a1a2a3 … am)的前i个字符(即为a1,a2,a3 … ai)
设Bj为字符串B(b1b2b3 … bn)的前j个字符(即为b1,b2,b3 … bj)
设 L(i , j)为使两个字符串和Ai和Bj相等的最小操作次数。
当ai等于bj时 显然L(i, j)=L(i-1, j-1)
当ai不等于bj时
若将它们修改为相等,则对两个字符串至少还要操作L(i-1, j-1)次
若删除ai或在Bj后添加ai,则对两个字符串至少还要操作L(i-1, j)次
若删除bj或在Ai后添加bj,则对两个字符串至少还要操作L(i, j-1)次
此时L(i, j)=min( L(i-1, j-1), L(i-1, j), L(i, j-1) ) + 1
显然,L(i, 0)=i,L(0, j)=j, 再利用上述的递推公式,可以直接计算出L(i, j)值。
为了保持与书中代码一致,下面的函数参数类型是string,而不是char*。
由于只要求计算两字串的距离,计算时,只用到两列数据,因而可以对代码进一步优化,节省空间。
上面的代码还可进一步优化,比如通过指针而不是数组名来访问内存。如果内存足够大,可以多申请空间,每次循环,通过修改保存的数据起始位置,避免内存复制。
- 编程之美读书笔记_3.3_计算字符串的相似度
- 《编程之美》读书笔记: 3.3 计算字符串的相似度
- 编程之美读书笔记---计算字符串的相似度
- 编程之美读书笔记-计算字符串的相似度
- [编程之美] PSet3.3 计算字符串的相似度
- 读书笔记之编程之美 - 3.3 计算字符串的相似度
- 《编程之美》读书笔记: 3.3 计算字符串的相似度(java实现)
- 编程之美读书笔记3.3— 计算字符串的相似度
- 编程之美 - 计算字符串相似度
- 编程之美之计算字符串的相似度
- 编程之美系列之计算字符串的相似度
- 编程之美——计算字符串的相似度
- 计算字符串的相似度(编程之美)
- 计算字符串的相似度(编程之美)
- 计算字符串的相似度--编程之美3.3
- 编程之美---计算字符串的相似度
- 计算字符串的相似度--编程之美3.3
- 编程之美3.3, 计算字符串的相似度
- 核二数据库命名规则
- 编程之美读书笔记_4.5_磁带文件存放优化
- 编程之美读书笔记_4.4_是否在三角形内
- 编程之美读书笔记_4.1_金刚坐飞机问题
- 编程之美读书笔记_3.8 求二叉树中节点的最大距离
- 编程之美读书笔记_3.3_计算字符串的相似度
- 编程之美读书笔记_杂项
- 今日总结
- 用于构建 RESTful Web 服务的多层架构
- oracle体系结构
- windbg dump
- 集合
- JAVA与设计模式--之STRATEGY策略模式
- XP两种工具在代码中检测并堵塞 GDI 泄漏