//方法一,从无通配符到有?再到有*,逐步推进分析 char strMatch( const char *str1, const char *str2) { int slen1 = strlen(str1); int slen2 = strlen(str2); //实际使用时根据strl的长度来动态分配表的内存 char matchmap[128][128]; memset(matchmap, 0, 128*128); matchmap[0][0] = 1; int i, j, k; //遍历目标字符串符串 for(i = 1; islen2) { return 0; } } return matchmap[slen1][slen2]; } //方法二,分析每个情况。 char strMatch( const char *str1, const char *str2) { int slen1 = strlen(str1); int slen2 = strlen(str2); //实际使用时根据strl的长度来动态分配表的内存 char matchmap[128][128]; memset(matchmap, 0, 128*128); int i, j, k; //定义内循环的范围 int lbound = 0; int upbound = 0; //遍历目标字符串符串 for(i = 0; i
带有通配符的字符串匹配算法-C/C++
日前某君给我出了这样一道题目:两个字符串,一个是普通字符串,另一个含有*和?通配符,*代表零个到多个任意字符,?代表一个任意字符,通配符可能多次出现。写一个算法,比较两个字符串是否相等。 我花了四个小时写出两种算法来解决这个问题,简单地测试了一下,好使!