在C++中查找字符串中子字符串的最快方法

10 浏览
0 Comments

在C++中查找字符串中子字符串的最快方法

我需要在一个字符串中找到许多子字符串。我下载了一个网页并将其放入一个字符串中。

然后,我需要查看该页面是否包含某些字符串(子字符串)。

现在我使用了带有boost库的正则表达式,因为我使用它来使用正则表达式模式([0-9]等)。

问题是:

如果我只需要在一个字符串中找到一个子字符串,哪种方法是最快的?

0
0 Comments

从上面的内容中可以得出,问题的出现原因是寻找字符串中的子字符串的速度较慢,需要寻找一种更高效的方法。为了解决这个问题,有几种算法可以使用,包括Boyer-Moore、Boyer-Moore-Horspool、Turbo Boyer-Moore和Knuth-Morris-Pratt。这些算法使用不同的技术来寻找子字符串。Boyer-Moore使用坏字符表和好后缀表,Boyer-Moore-Horspool只使用坏字符表,Turbo Boyer-Moore相对于原始的Boyer-Moore来说只需要较少的比较步骤,Knuth-Morris-Pratt算法基于部分匹配表。而在比较中,Boyer-Moore-Horspool算法获得了胜利。因此,解决这个问题的方法是使用Boyer-Moore-Horspool算法来寻找字符串中的子字符串。

0