我被要求编写一个程序来计算给定字符串中的正则表达式匹配。 正则表达式仅包含星号(*)。
例如: aabaacb 中 aa * b 的出现 2
此代码是否已优化,或者是否有任何方法可以优化代码? (C ++中的代码)
#include<stdio.h>
#include<stdlib.h>
bool match(char * s1, char * s2){
int i = 0, r = 0, count = 0;
while (s1[i] != 0 && s2[r] != 0){
if (s2[r] == '*'){
if (s2[r + 1] == s1[i]){
i++; r+=2;
}
else
i++;
}
else if (s1[i++] != s2[r++])
return false;
}
return true;
}
int count(char * s1, char * s2){
int __count__ = 0;
while (*s1 != NULL){
if (match(s1++, s2))
__count__++;
}
return __count__;
}
int main(){
char * s1 = "hellohelohellloshepo";
char * s2 = "he*o";
printf("%s in %s : %d", s2, s1, count(s1, s2));
getchar();
}