在电话采访中我被问到这个问题。
给定两个字符串,找到将一个字符串转换为另一个字符串所需的最少编辑次数。解决方案需要在java中实现并在O(n * m)中运行,假设n和m是输入字符串的长度。
实施例
字符串:牛奶 - >的啤酒
min edits: 4
答案 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中删除。如果你可以删除该字符,不要增加计数器。否则增加计数器。
计数器包含最少的编辑次数。