Brute-Force算法(简称BF算法)即简单模式匹配算法也称暴力匹配,就是粗暴地拿一个串同另一个串中的字符一一比对,得到最终结果。
思路为:
假设有主串s1和子串s2,s1的第一个字符和s2的第一个字符开始比较,若是相等,则继续比较后续字符;否则从主串s1的第二个字符开始重新与子串s2的第一个字符比较,若相等则继续比较后续字符,否则从主串s1的第三个字符开始重新与子串s2的第一个字符进行比较,以此类推,最终如果子串的所有字符全部比较完则代表主串中存在和子串s2相等的子串。否则则不匹配。
直接上代码
void bf(char *s1,char *s2){ int i=0,j=0; int s1length=strlen(s1); int s2length=strlen(s2); while(i<s1length && j<s2length){ if(s1[i]==s2[j]){ i++; j++; }else{ i=i-j+1; j=0; } } if(j==s2length){ printf("true"); }else{ printf("false"); } }
传入参数为bf("xxx1","xx");输出true
传入参数为bf("xxx1","1x");输出false
没写注释,自己理解。每日一水结束~
发表评论