首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

求两个字符串差异程度的算法解决方案

2012-03-27 
求两个字符串差异程度的算法不是LCS,不是求最长公共字串。要求两字符串有差异的字符个数。例如:aaaaabaaaaaa

求两个字符串差异程度的算法
不是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
[解决办法]

探讨
修正一下,结果是两个串减去公共子序列长度的总和

热点排行