计算字符串之间的相似度(递归)
来源:互联网 发布:销售出入库软件 编辑:程序博客网 时间:2024/06/05 20:31
可操作规则:
1,修改一个字符('a' 变 'b')
2,增加一个字符("adbb" 变"aebbd")
3,删除一个字符("travelling" 变 "traveling")
求字符串strA变成strB的最少变换次数。
package JiaNan;public class Main {static int CalStrDistance(String strA,int pABegin,int pAEnd,String strB,int pBBegin,int pBEnd){if(pABegin > pAEnd){ if(pBBegin > pBEnd) return 0; else return pBEnd - pBBegin +1;}if(pBBegin > pBEnd){ if(pABegin > pAEnd) return 0; else return pAEnd - pABegin + 1;}if(strA.charAt(pABegin) == strB.charAt(pBBegin)){return CalStrDistance(strA,pABegin+1,pAEnd,strB,pBBegin+1,pBEnd);}else{ int t1 = CalStrDistance(strA,pABegin,pAEnd,strB,pBBegin+1,pBEnd); int t2 = CalStrDistance(strA,pABegin+1,pAEnd,strB,pBBegin,pBEnd); int t3 = CalStrDistance(strA,pABegin+1,pAEnd,strB,pBBegin+1,pBEnd); return minValue(t1,t2,t3) + 1;}}static int minValue(int t1, int t2, int t3) {// TODO Auto-generated method stubint min = t1 < t2 ? t1 : t2;min = min < t3 ? min : t3;return min;}public static void main(String[] args){String strA = "abcfh";String strB = "abcdefgh";System.out.println(CalStrDistance(strA,0,strA.length()-1,strB,0,strB.length()-1));}}/*3*/
这个求的是最少变化次数,那就感觉比较有意思了,我利用一个min函数 + 递归 那求出来的就是最少变换次数。按照以前的想法,往往会用变量啥的记录每一种变换完成的次数,然后比较大小,这种递归思路我想以后肯定会有很多用处。
- 计算字符串之间的相似度(递归)
- 计算两个字符串的相似度(递归和DP)
- 计算字符串的相似度(VB2005)
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度
- 计算字符串的相似度。
- 计算字符串的相似度
- MBean的实现
- [Leetcode] Max Tree Sum
- windows下lib与dll关系
- HDOJ 1159 Common Subsequence 杭电 ACM
- Struts2从后台传递数据到前台的主要方法和流程
- 计算字符串之间的相似度(递归)
- Ubuntu 12.04下安装中文分词搜索Coreseek
- Go编译选项(笔记)
- sicily 1001. Alphacode
- Unbound classpath container: 'JRE System Library [jdk1.6.0_04]' in project
- vector顺序容器的添加与删除
- 洗牌和发牌游戏
- AS3优化技巧总结(不包括数据库和网络)
- CoreData多线程安全