Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检查字符串是否包含其他字符串算法?_C++_String_Algorithm_Parsing - Fatal编程技术网

C++ 检查字符串是否包含其他字符串算法?

C++ 检查字符串是否包含其他字符串算法?,c++,string,algorithm,parsing,C++,String,Algorithm,Parsing,如果我有一个字符串A,我有许多其他字符串,我想看看这些其他字符串中是否有一个在A中 什么算法可以在尽可能少的迭代中做到这一点 例: “你好,我叫鲍勃。” 我想看看是否包含“name is b”,它从[11]开始 我不想使用正则表达式库 感谢最有效的算法是,给定长度为n的字符串和总长度为m的字符串集,可以在时间O(n+m+z)内找到所有匹配项,其中z是报告的匹配项总数。它是基于有限自动机的,是有限自动机的推广 该算法的一个很酷的方面是,如果您有一组固定的关键字和一组要搜索的文本字符串,那么可以通过

如果我有一个字符串A,我有许多其他字符串,我想看看这些其他字符串中是否有一个在A中

什么算法可以在尽可能少的迭代中做到这一点

例:

“你好,我叫鲍勃。”

我想看看是否包含“name is b”,它从[11]开始

我不想使用正则表达式库


感谢

最有效的算法是,给定长度为n的字符串和总长度为m的字符串集,可以在时间O(n+m+z)内找到所有匹配项,其中z是报告的匹配项总数。它是基于有限自动机的,是有限自动机的推广

该算法的一个很酷的方面是,如果您有一组固定的关键字和一组要搜索的文本字符串,那么可以通过进行O(m)预处理来加速算法,以构建匹配器。然后可以在时间O(n+z)中找到长度为n的字符串中的所有匹配项

另一方面,如果您有一个固定的字符串,然后希望匹配一组不同的模式字符串,那么考虑一下,它给出相同的运行时保证,但如果文本是固定的,则更快。 希望这有帮助