这个问题适用于概念检查。我有一个字符串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',需要将三个字符捆绑成一个标记。编辑距离和距离是否可以轻松测量此标记?通过删除树数据库中的分隔符,问题似乎更加复杂。
我提出的解决方案我希望实现检查是将'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'),因此与汉明距离匹配。
我不需要帮助匹配算法,汉明距离法,通配符或虚拟字符,我在问题的上下文中添加了这个。现在,我将令牌视为单独的char并获得良好的结果,但是知道它们不像处理为令牌那样精确。限制因素可能是编码模式中的不一致。但是,我希望将其作为限制,而不是我的算法。
答案 0 :(得分:1)
您的字符串包含字母数字字符,即基数36。此外,这些字符分组在“标记”中。它无法存储在char
中,但您可以将其存储在int
中。
您可以存储一对,而不是在树中存储整数,其中char表示值的类型:
0
获取数值1
*
2
代表xxxx?
(面具)