【问题标题】:Hamming Distance as integer return of two Strings Java汉明距离作为两个字符串Java的整数返回
【发布时间】:2014-01-21 21:21:58
【问题描述】:

为了计算两个字符串的汉明距离,它们必须具有相同的长度。 如果用java实现这种算法,如果字符串长度不同,会返回什么?

【问题讨论】:

  • 你能详细说明一下吗?没有更多背景知识,很难说出你在问什么。
  • 两个不同长度的字符串的汉明距离是不确定的。
  • 由于汉明距离是一个度量,因此是非负的,如果您想简单地指示失败的参数而不使用异常,您可以返回 -1 并进行适当的处​​理。这取决于您的需求。
  • 为什么我被否决了???自我介绍

标签: java string algorithm


【解决方案1】:

如果字符串长度不同,则不定义汉明距离。

在这种情况下,您可能想要的是 Levenshtein Distance

【讨论】:

  • 所以如果包边距离不能使用 Levenshtein 距离,解决方案是返回?
  • @StefanSpreger 取决于您的需求。但是请注意,对于每两个相同长度的字符串,Levenshtein 距离并不等于汉明距离。
  • @GariBN 如果我有“HemmingMethod”会返回什么
  • 返回的内容取决于您想要的具体行为。但是,在这种情况下抛出 IllegalArgumentException 会很有意义,文档中将其描述为“抛出以指示方法已传递了非法或不适当的参数。”
  • @StefanSpreger 我在下面编辑了我的答案。看看吧。
【解决方案2】:

答案就在你的问题中:

为了计算两个字符串的汉明距离,它们必须具有相同的长度

否则 - 你无法计算它(它是未定义的)!

关于你可以退货,这取决于你的需要。您可以退回任何您想要的东西。如果您不想做Pairwise alignment 之类的事情,我可以为您提供两个简单的指标:

给定两个字符串,长度为 x 和长度为 y 中较短的一个:

  1. 将最短字符串与较长字符串的长度为x的前缀通过汉明距离进行比较,并添加(y-x)。就好像你用 $ 或其他一些特殊字符填充了较短的字符串。

  2. 同样,使用特殊字符(例如 $)从较短字符串的所有可能填充选项的右侧和左侧取最小汉明距离。

【讨论】:

    猜你喜欢
    • 2017-05-09
    • 2019-06-07
    • 2017-05-18
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 2013-07-28
    • 2011-06-14
    • 1970-01-01
    相关资源
    最近更新 更多