【问题标题】:How to transform one string to another with minimal number of edits?如何以最少的编辑次数将一个字符串转换为另一个字符串?
【发布时间】:2012-02-26 20:13:53
【问题描述】:

我在电话面试中被问到这个问题。

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

示例:
字符串:牛奶 -> 啤酒
最少编辑次数:4

【问题讨论】:

标签: java string algorithm


【解决方案1】:

对于不同长度的字符串,使用 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

【讨论】:

    【解决方案2】:

    假设:单词包含不同的字母。

    如何为 S1 创建字符哈希集。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2013-08-19
      • 2020-05-17
      • 2021-03-19
      相关资源
      最近更新 更多