c - 在另一个 'string' 中搜索子 'string'

标签 c

我如何编写一个有效的算法来在 C 中的另一个数组中搜索整数子集数组?例如:

unsigned a[] = {42, 72, 61, 1023, 84, 42, 42, 193, 302, 72};
unsigned long al = 10;
unsigned b[] = {61, 1023, 84};
unsigned long bl = 3;

我尝试了一种蛮力方法,遍历 a然后遍历 b如果a[n]b[0] , 但如果比赛中途失败则回溯。这似乎是我能想到的最好的方法,但我确信一定有更快的方法。

最佳答案

有几个著名的、高效的string searching algorithms他们都将为此目的而努力。如果您要查找的是子序列,则整数数组和整数数组之间确实没有区别,整数数组均已分配给字符表示。

如果您的问题真的像您发布的那样小,那么除了蛮力之外可能不值得使用任何东西,但我假设这只是您想要做的事情的一个玩具示例。

关于c - 在另一个 'string' 中搜索子 'string',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791910/

相关文章:

c - 错误,void 值没有被忽略,因为它应该被忽略

c - C中的有符号整数溢出

c - 使用 LIBSVM 将 svm.cpp 文件与我的 C 程序链接时出错

c++ - 为什么要检查按位与的结果是否等于其中一个值?

c++ - Xerces/Xalan : UNC path as argument for document function?

c - 使用 malloc 函数创建的数组超出了所需的大小

c - Socket,与INADDR_ANY绑定(bind)时如何查找本地地址

c++ - 无限循环的 "for(;;)"习语是否正确归因于 PDP-11 C 编译器?

c - 如何使用 C 将 char 数组更改为 int ?

c - C 标准是否禁止重新声明?