题目链接:力扣(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;
}