c语言题目 判断两个字符串是否匹配(1个通配符代表一个字符) 【问题描述】 判断两个字符串是否匹配,其中一个字符串中包括通配符*,*可以代表任意一个非空字符。(其中每个字符串长度不超过100000);
时间: 2023-05-18 22:06:01 浏览: 224
检验符号匹配度(C语言版)
可以使用递归的方法来解决这个问题。首先判断两个字符串是否都为空,如果是,则它们匹配;如果不是,则判断第一个字符是否匹配,如果匹配,则递归判断剩余的字符串是否匹配;如果第一个字符不匹配,则判断第一个字符串是否为通配符,如果是,则递归判断第一个字符串去掉通配符和第二个字符串是否匹配;如果第一个字符串不是通配符,则它们不匹配。
以下是 C 语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
int match(char *s1, char *s2) {
if (*s1 == '\0' && *s2 == '\0') {
return 1;
} else if (*s1 == *s2) {
return match(s1 + 1, s2 + 1);
} else if (*s1 == '*') {
return match(s1 + 1, s2) || match(s1, s2 + 1);
} else {
return 0;
}
}
int main() {
char s1[100001], s2[100001];
scanf("%s%s", s1, s2);
if (match(s1, s2)) {
printf("Match\n");
} else {
printf("Not match\n");
}
return 0;
}
```
输入两个字符串,调用 match 函数判断它们是否匹配,输出结果。
阅读全文