<多次搜索>

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

字符串的题目,温习了一下strstr库函数的使用。

描述

C 库函数 char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 '\0'。

声明

下面是 strstr() 函数的声明。

char *strstr(const char *haystack, const char *needle)

参数

  • haystack -- 要被检索的 C 字符串。
  • needle -- 在 haystack 字符串内要搜索的小字符串。

返回值

该函数返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返回 null。

int** multiSearch(char* big, char** smalls, int smallsSize, int* returnSize, int** returnColumnSizes)
{
    int len = strlen(big);
    int **ans = (int **)malloc(sizeof(int *) * smallsSize);
    for (int i = 0; i < smallsSize; i++) {
        ans[i] = (int *)malloc(sizeof(int) * len);
    }
    *returnColumnSizes = (int*)malloc(sizeof(int) * smallsSize);

    for (int i = 0; i < smallsSize; i++) {
        int cnt = 0;
        if (strcmp(smalls[i], "") != 0) {
            char *p = strstr(big, smalls[i]); // 寻找字符串首次出现的位置
            while (p != NULL) {
                ans[i][cnt++] = p - big;
                p = p + 1;    // 指针向右移动一位,避免重复
                p = strstr(p, smalls[i]); // 寻找字符串出现的另外的位置
            }
        }
        (*returnColumnSizes)[i] = cnt;
    }

    *returnSize = smallsSize;
    return ans;
}

你可能感兴趣的:(字符串)