求两个字符串差异程度的算法
不是LCS,不是求最长公共字串。要求两字符串有差异的字符个数。例如:
aaaaabaaaaa
aaaaacaabaa
这两个字符串,最大公共字串长度是5,但它们只有两个字符不同,函数输出值应为2。
如果是:
aaabbbcccddd
aaaeeeddd
函数的输出值应该是6。
比较形象地形容一下,把两个字符串排成上下两行,每个字符串都可以在任何位置插入空格以便上下对齐,每个列上至少有一个字符来自这两个字符串。当对齐程度最高的时候,没有对上的列的数即为函数输出值。
aaabbbcccddd
aaaeeeddd
最优对齐状态是:
aaabbbcccddd
aaaeee ddd
没有对上的列是6,函数输出值为6。
如果是:
abcde
acefg
最优对齐状态是:
abcde
a c efg
没有对上的列数是4,函数输出值为4。
特此请教!
[解决办法]
这个不就是很一般的稍微变了下下的最长公共子序列么?
aaabbbcccddd
aaaeeeddd
这两串的最长公共子序列不就是aaaddd
然后去长度最长那串的size减去公共长度,得出不相似长度。
[解决办法]
修正一下,结果是两个串减去公共子序列长度的总和
[解决办法]
LZ网上搜索一下编辑距离吧!
[解决办法]
LS的是专业人士吧
对,实际上就是求两个字符串的编辑距离
[解决办法]
《编程之美》中有一节是“计算字符串的相似度“,能解决LZ的问题。
求距离,即操作所需要的次数。最终达到两个字符相等。
操作方面:
1。修改一个字符
2。增加一个字符
3。删除一个字符
用递归实现。。
[解决办法]
这个不对的,abc , adc 总长为6,最长公共子串长为2,但是不是2,而是1
[解决办法]