如何计算比赛次数?

时间:2019-01-22 10:34:21

标签: c match

考虑到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

1 个答案:

答案 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]);
}