1. 程式人生 > >帶有萬用字元的兩個字串匹配問題

帶有萬用字元的兩個字串匹配問題

比如constchar*s1="abcdfgfgdfgbhcdf";const char*s2="**fgd**f*bh*";就是匹配的,並且輸出fgdfgbh。
bool pipei(const char*s1,const char*s2)
{
	const char *beg=NULL;const char *t1=NULL,*t2=NULL;
	while(*s2)
	{
		if(*s2=='*') s2++;
		else
		{
			if(t1==NULL) t1=s2;
			if(*(s2+1)=='*'||*(s2+1)=='\0') t2=s2;
			if(t2)
			{
				int i=0;
				while (*s1&&t1<=t2)
				{
					if(*s1==*t1){s1++;t1++;i++;}
					else{t1-=i;s1-=i;s1++;i=0;}
				}
				if(t1<=t2) return false;
				else if(!beg) beg=s1-i;
				t1=t2=NULL;
			}
			s2++;
		}
	}
	if(beg){string s(beg,s1);cout<<s<<endl;}
	return true;
}