📌  相关文章
📜  如何检查单词是否存在于给定的字符数组中 - C 编程语言(1)

📅  最后修改于: 2023-12-03 14:53:11.027000             🧑  作者: Mango

如何检查单词是否存在于给定的字符数组中 - C 编程语言

在 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() 或自定义函数实现。自定义函数需要进行两次循环遍历,效率较低但可以处理不区分大小写的情况。