gpt4 book ai didi

c++ - 按标记匹配字符串 - 概念检查

转载 作者:行者123 更新时间:2023-11-28 08:00:13 26 4
gpt4 key购买 nike

此问题用于概念检查。我有一个字符串 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”与“010”的比值与“008”的比值,需要将三个字符捆绑​​到一个 token 中。这个token能不能方便的测出编辑距离和距离?由于删除了树数据库中的分隔符,问题似乎变得更加复杂。

我建议的解决方案是将“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')匹配是使用汉明距离。

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

最佳答案

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

您可以存储一对,而不是在树中存储整数,其中字符表示值的类型:

  • 0 为数值
  • 1 代表 *
  • 2 代表 xxxx?(掩码)
  • 等...

关于c++ - 按标记匹配字符串 - 概念检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11674791/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com