Рассматривая 2 строки, я хочу создать программу на C, которая возвращает количество возможных совпадений между этими 2 строками.
Например,
$>./a.out "abc" "a*"
1
Поскольку возможна только 1match: * = "bc"
$>./a.out "abc" "a**"
3
Поскольку существует только 3 возможных совпадения: (* = "bc", * = "");(* = "", * = "bc");(* = "b", * = "c")
$>./a.out "ab cool ab cool ab" "ab*ab*"
2
Поскольку существует 2 возможных совпадения: (* = "cool", * = "cool ab");(* = "cool ab cool", * = "")
Я выполнил функцию "int match (char *, char *)", которая возвращает значение true, если существует совпадение, и значение false, если его не существует.,Но я хотел бы сейчас подсчитать возможные совпадения.
Любые советы или предложения?
int match(char* string, char* star) {
if (string[0] == '\0' && star[0] == '\0')
return 1;
else if (star[0] == '*')
return match(string, star+1);
else if (string[0] == '\0')
return 0;
else if (string[0] == star[0]){
if (star[-1] == '*') {
if (!match(string+1, star+1))
return match(string+1, star);
}
return match(string+1, star+1);
}
else if (string[0] != star[0] && star[-1] == '*')
return match(string+1, star);
else if (string[0] != star[0] && star[-1] != '*')
return 0;
}