在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求 各位实现字符串通配符的算法。要求:实现如下2个通配符:*:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不

题目:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求
各位实现字符串通配符的算法。要求:实现如下2个通配符:*:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同)?:匹配1个字符

分析:递归实现

bool is_match(const char* src, const char* input)
{
	//出口条件:两个串都走到最后,或者(abc* abc)
	if (*src == '\0' && *input == '\0')
		return true;
	if (*src == '*' && *(src + 1) == '\0' && *input == '\0')
		return true;

	if (*src == '\0' || *input == '\0')
		return false;

	//?匹配一个,继续匹配下一对
	if (*src == '?')
	{
		return is_match(src + 1, input + 1);
	}

	//*可以不匹配(0匹配),匹配一个,匹配多个
	//(0匹配匹配上就不进行1匹配,1匹配匹配上就不进行多匹配)
	else if (*src == '*')
	{
		return is_match(src + 1, input)
			|| is_match(src + 1, input+1)
			|| is_match(src, input+1);
	}

	else if (*src == *input)
	{
		//递归下一对字符
		return is_match(src + 1, input + 1);
	}
	
	else
	{
		return false;
	}
}
在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求 各位实现字符串通配符的算法。要求:实现如下2个通配符:*:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同)?:匹配1个字符
[Zài jìsuànjī zhōng, tōngpèifú yī zhǒng tèshū yǔfǎ, guǎngfàn yìngyòng yú wénjiàn sōusuǒ, shùjùkù, zhèngzé biǎodá shì děng lǐngyù. Xiàn yāoqiú gèwèi shíxiàn zìfú chuàn tōngpèifú de suànfǎ. Yāoqiú: Shíxiàn rúxià 2 gè tōngpèifú:*: Pǐpèi 0 gè huò yǐshàng de zìfú (zìfú yóu yīngwén zìmǔ hé shùzì 0-9 zǔchéng, bù qūfēn dàxiǎo xiě. Xià tóng)?: Pǐpèi 1 gè zìfú]
In computers, wildcards are a special grammar that is widely used in file search, databases, regular expressions, and more. Current request
The algorithm for implementing string wildcards. Requirement: The following two wildcards are implemented: *: Matches 0 or more characters (characters consist of English letters and numbers 0-9, not case sensitive. The same below)? : Match 1 character
 

猜你喜欢

转载自blog.csdn.net/lyl194458/article/details/88820090