考虑到2个字符串,我想用C语言编写一个程序,返回这2个字符串之间的可能匹配数。
例如
<a>
因为只有1个可能的匹配项:* =“ bc”
$>./a.out "abc" "a*"
1
因为只有3种可能的匹配项:(* =“ bc”,* =“”); (* =“”,* =“ bc”); (* =“ b”,* =“ c”)
$>./a.out "abc" "a**"
3
因为有2种可能的匹配项:(* =“ cool”,* =“ cool ab”); (* =“ cool ab cool”,* =“”)
我做了一个函数“ int match(char *,char *)”,当存在匹配项时返回true,而在不存在匹配项时返回false。 但是我现在想计算可能的比赛。
有什么建议或建议吗?
$>./a.out "ab cool ab cool ab" "ab*ab*"
2
答案 0 :(得分:0)
int count_match(char* string, shar* star) {
int i;
for (i = 0; star[i] != '\0'; i += 1) {
if (star[i] != '*') {
if (star[i] != string[i])
return 0;
}
else {
int count = 0;
int j;
for (j = i; string[j] != '\0'; j += 1) {
count += count_match(string + j; star + i + 1);
count += count_match(string + j; star + i + 1);
return count;
}
}
return (string[i] == star[i]);
}