小编 太晚*_*太晚了的帖子

有效地检查一个字符串是否是另一个字符串的近似子字符串(近似约束在另一个字符串中),直到给定的错误阈值?

取两个 C 或 C++ 字符串,s1并且s2. 检查一个是否完全包含另一个是相当简单的。

true如果s2是 的子字符串,则返回以下内容s1

在C中:

strstr(s1, s2)
Run Code Online (Sandbox Code Playgroud)

在 C++ 中:

#include <string>
str.find(str2) != string::npos
Run Code Online (Sandbox Code Playgroud)

随着升压:

#include <boost/algorithm/string.hpp>
boost::algorithm::contains(s1, s2)
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一种类似的方法,可以有效地(在速度方面,而不是内存方面)查找一个字符串是否大约包含在 / 大约是另一个字符串的子串中,直到给定的差异阈值。agrep与 Unix 系统中查找文件的 bash 命令非常相似。

例如,假设该函数被称为approx_contains. 如果包含在编辑距离最多为 4 的范围内,则approx_contains(s1, s2, 4)可以返回 true/false 。s2s1

在网上搜索时,我只发现了大量关于如何计算两个字符串之间的 Levenshtein 距离的参考文献和问题,或者关于近似字符串模式匹配的理论算法,这些算法不仅仅是简单地检查一个字符串是否包含另一个字符串 - 这在这里变得浪费。

非常努力地避免重新发明轮子,怎么可能有人在 C 或 C++ 中进行这样的检查?

c c++ string matching agrep

6
推荐指数
1
解决办法
1066
查看次数

标签 统计

agrep ×1

c ×1

c++ ×1

matching ×1

string ×1