0

这个问题用于概念检查。我有一个字符串 000.00-010.0.0.0 我想从列表 {000.00-012.0.0.0 和 000.00-008.0.0.0} 中找到最接近的匹配项(在编辑度量中包含一个数字距离度量)我会喜欢以'012','010'和'008'作为标记并测量它们之间的距离。

字符串匹配的标准方法将查找每个字符位置的变化,对变化求和并返回一个距离。修改后的距离也将测量 CHARS 之间的 ASCII 距离 - G 离 E 比 D 更远。

要测量 '012' 与 '008' 一样是 '010',需要将三个字符捆绑​​到一个令牌中。可以轻松测量此令牌的编辑距离和距离吗?由于删除了树数据库中的定界符,问题似乎更加复杂。

我想要进行实际检查的建议解决方案是将“012”、“010”和“008”转换为单个 CHAR ASCII 符号,例如 )、* 和 +,测量字符距离和字符串编辑距离,然后打印转换回“012”、“010”和“008”。

示例字符串:MER99.C0.00M.14.006.00.060.350

而且,还有通配符:

  • MER99.*.006.00.060.350
  • MER99.C0.00M.??.006.00.060.350

由于字符串的长度相同(有些需要虚拟字符作为长度,'00M'实际上是'M')匹配与汉明距离。

我不需要匹配算法、汉明距离方法、通配符或虚拟字符的帮助,我将其添加到问题的上下文中。现在,我将令牌视为单独的字符并获得良好的结果,但知道它们不如作为令牌处理时那样精确。限制因素可能是编码模式中的不一致。但是,我想以此作为限制,而不是我的算法。

4

1 回答 1

1

您的字符串包含字母数字字符,即以 36 为基数的数字。此外,这些字符被分组为“令牌”。它不能存储在 中char,但您可以将其存储在 中int

您可以存储一对,而不是在树中存储整数,其中 char 告诉值的类型:

  • 0对于数值
  • 1为了*
  • 2对于xxxx?(掩码)
  • ETC...
于 2012-07-26T19:06:49.223 回答