代码之家  ›  专栏  ›  技术社区  ›  Delan Azabani

在另一个“字符串”中搜索子“字符串”

c
  •  1
  • Delan Azabani  · 技术社区  · 14 年前

    如何编写一个高效的算法来搜索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] ,但如果比赛中途失败,则进行回溯。这似乎是我能想到的最好的办法,但我相信一定有更快的办法。

    1 回复  |  直到 14 年前
        1
  •  6
  •   Tyler McHenry    14 年前

    有几个著名的,高效的 string searching algorithms 他们都会为此而努力。如果子序列是您要寻找的,那么整数数组和每个被分配给字符表示的整数数组之间实际上没有区别。

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