📅  最后修改于: 2023-12-03 14:53:11.027000             🧑  作者: Mango
在 C 编程语言中,要检查单词是否存在于给定的字符数组中,可以使用字符串处理函数 strstr()
或自定义函数实现。
strstr()
函数strstr()
函数可以在一个字符串中查找另一个字符串的第一次出现的位置,如果找到了则返回第一次出现的位置的指针,否则返回 NULL
。
#include <stdio.h>
#include <string.h>
int main() {
char word[] = "hello";
char sentence[] = "Hello World!";
if (strstr(sentence, word) != NULL) {
printf("'%s' is found in '%s'.\n", word, sentence);
} else {
printf("'%s' is not found in '%s'.\n", word, sentence);
}
return 0;
}
输出结果为:
'hello' is not found in 'Hello World!'.
需要注意的是,strstr()
函数区分大小写。如果需要不区分大小写的查找,则需要自定义函数实现。
自定义函数实现可以实现不区分大小写的查找。
#include <stdio.h>
#include <string.h>
int find_word(char *sentence, char *word) {
int i, j, k;
int len_sentence = strlen(sentence);
int len_word = strlen(word);
for (i = 0; i <= len_sentence - len_word; i++) {
for (j = i, k = 0; k < len_word && tolower(sentence[j]) == tolower(word[k]); j++, k++);
if (k == len_word) {
return i;
}
}
return -1;
}
int main() {
char word[] = "hello";
char sentence[] = "Hello World!";
if (find_word(sentence, word) != -1) {
printf("'%s' is found in '%s'.\n", word, sentence);
} else {
printf("'%s' is not found in '%s'.\n", word, sentence);
}
return 0;
}
输出结果为:
'hello' is found in 'Hello World!'.
自定义函数需要进行两次循环遍历,时间复杂度为 $O(nm)$,其中 $n$ 和 $m$ 分别为字符数组和单词的长度。因此自定义函数的效率较低,但可以处理不区分大小写的情况。
在 C 编程语言中,要检查单词是否存在于给定的字符数组中,可以使用字符串处理函数 strstr()
或自定义函数实现。自定义函数需要进行两次循环遍历,效率较低但可以处理不区分大小写的情况。