c语言代码题 4.判断两个字符串是否匹配(1个通配符代表一个字符) 【问题描述】 判断两个字符串是否匹配,其中一个字符串中包括通配符”,可以代表任意一个非空字符。(其中每个字符串长度不超 过100000): 【输入形式】 分两行输入两个字符串,字符串中可以包括空格,以结束,其中第一行字符串中包括通配符。 【输出形式】 判断两个字符串是否匹配,若匹配,输Hyes,不匹配输出no
时间: 2023-05-25 18:03:55 浏览: 213
fp.rar_wildcard
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100001], str2[100001];
fgets(str1, 100001, stdin);
fgets(str2, 100001, stdin);
int len1 = strlen(str1) - 1; // 去掉换行符\n
int len2 = strlen(str2) - 1;
int i = 0, j = 0;
while (i < len1 && j < len2)
{
if (str1[i] == '*')
{
i++;
while (j < len2)
{
if (str1[i] == str2[j] || str1[i] == '*') // 匹配成功或者尝试下一个通配符
break;
j++;
}
}
else if (str1[i] == str2[j])
{
i++;
j++;
}
else
{
printf("no\n");
return 0;
}
}
if (i == len1 && j == len2) // 包括两个字符串同时结束的情况
printf("yes\n");
else
printf("no\n");
return 0;
}
阅读全文