带有通配符的字符串匹配算法-C/C++

日前某君给我出了这样一道题目:两个字符串,一个是普通字符串,另一个含有*和?通配符,*代表零个到多个任意字符,?代表一个任意字符,通配符可能多次出现。写一个算法,比较两个字符串是否相等。 我花了四个小时写出两种算法来解决这个问题,简单地测试了一下,好使!
//方法一,从无通配符到有?再到有*,逐步推进分析
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
上一篇:Mybatis-Plus,真香!


下一篇:Linux下配置Golang开发环境