取两个 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++ 中进行这样的检查?