如何使用最少的编辑数将一个字符串转换为另一个字符串?

时间:2012-02-26 20:13:53

标签: java string algorithm

在电话采访中我被问到这个问题。

给定两个字符串,找到将一个字符串转换为另一个字符串所需的最少编辑次数。解决方案需要在java中实现并在O(n * m)中运行,假设n和m是输入字符串的长度。

实施例
字符串:牛奶 - >的啤酒
min edits: 4

2 个答案:

答案 0 :(得分:6)

对于不同长度的琴弦,请使用Levenshtein距离: http://en.wikipedia.org/wiki/Levenshtein_distance

如果您有相同长度的字符串,并且您不想考虑插入或删除,则汉明距离更有效: http://en.wikipedia.org/wiki/Hamming_distance

Levenshtein距离的示例实现: http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance

答案 1 :(得分:0)

假设:Word包含不同的字母。

如何为S1创建Character Hashset。

现在遍历S2中的每个字符并尝试将其从S1的Hashset中删除。如果你可以删除该字符,不要增加计数器。否则增加计数器。

计数器包含最少的编辑次数。