【剑指Offer】第19题:正则表达式匹配

题记:记录一下自己的刷题过程
题目:请实现一个函数用来匹配包含’.‘和’ * ‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab * ac * a"匹配,但与"aa.a"及"ab *a"均不匹配。
首先贴上源代码

bool matchCore(char *str, char* pattern)
{
	if (*str == '\0'&&*pattern == '\0')
		return true;
	if (*str != '\0'&&*pattern == '\0')
		return false;
	if (*(pattern+1) == '*')
	{
		if (*str == *pattern || (*pattern == '.'&&*str != '\0'))
			return matchCore(str + 1, pattern) ||
			matchCore(str, pattern + 2) ||
			matchCore(str + 1, pattern + 2);
		else
			return matchCore(str + 1, pattern + 2);
	}
	if (*str == *pattern || (*pattern == '.'&& *str != '\0'))
		return matchCore(str + 1, pattern + 1);
	return false;
}


bool match(char *str, char* pattern)
{
	if (str == nullptr || pattern == nullptr)
	{
		return false;
	}
	return matchCore(str, pattern);
}


int main()
{
	char a[] = "aaa";
	char b[] = "aa*.a";
	if (match(a, b))
	{
		printf("match successful\n");
	}
	else
		printf("match fail\n");
	system("pause");
    return 0;
}

下面是运行结果
在这里插入图片描述
说一下原理:

每次从字符中拿一个字符和模式里的字符去匹配。如果模式中的字符是‘.’,那么他可以匹配任意字符。如果模式的字符和字符串中的字符一样的话,那么相互匹配。接着就匹配下一个字符。
每次从字符中拿一个字符和模式里的字符去匹配。如果模式中的字符是‘.’,那么他可以匹配任意字符。如果模式的字符和字符串中的字符一样的话,那么相互匹配。接着就匹配下一个字符。
如果模式中的第二个字符不是‘ * ’的话,问题就比较简单。如果字符串中的第一个字符和模式中的第一个字符相匹配,那么在字符串和模式.上都向后移动一个字符,然后匹配剩余的字符串和模式。如果字符串中的第一个字符和模式中的第一个字 符不相匹配,则直接返回false。
当模式中的第二个字符是‘*’时,问题要复杂一些, 因为可能有多种不同的匹配方式。一种选择是在模式上向后移动两个字符。这相当于和它前面的字符被忽略了,因为可以匹配字符串中的0个字符。如果模式中的第一个字符和字符串中的第一个字符相匹配,则在字符串上向后移动一个字符,而在模式上有两种选择:可以在模式上向后移动两个字符,也可以保持模式不变。

PS:这些都是个人观点,如果哪里有错误的,欢迎评论区批评指正^ - ^

数据治理是确保数据准确性、可靠性、安全性、可用性和完整性的体系和框架。它定义了组织内部如何使用、存储、保护和共享数据的规则和流程。数据治理的重要性随着数字化转型的加速而日益凸显,它能够提高决策效率、增强业务竞争力、降低风险,并促进业务创新。有效的数据治理体系可以确保数据在采集、存储、处理、共享和保护等环节的合规性和有效性。 数据质量管理是数据治理中的关键环节,它涉及数据质量评估、数据清洗、标准化和监控。高质量的数据能够提升业务决策的准确性,优化业务流程,并挖掘潜在的商业价值。随着大数据和人工智能技术的发展,数据质量管理在确保数据准确性和可靠性方面的作用愈发重要。企业需要建立完善的数据质量管理和校验机制,并通过数据清洗和标准化提高数据质量。 数据安全与隐私保护是数据治理中的另一个重要领域。随着数据量的快速增长和互联网技术的迅速发展,数据安全与隐私保护面临前所未有的挑战。企业需要加强数据安全与隐私保护的法律法规和技术手段,采用数据加密、脱敏和备份恢复等技术手段,以及加强培训和教育,提高安全意识和技能水平。 数据流程管理与监控是确保数据质量、提高数据利用率、保护数据安全的重要环节。有效的数据流程管理可以确保数据流程的合规性和高效性,而实时监控则有助于及时发现并解决潜在问。企业需要设计合理的数据流程架构,制定详细的数据管理流程规范,并运用数据审计和可视化技术手段进行监控。 数据资产管理是将数据视为组织的重要资产,通过有效的管理和利用,为组织带来经济价值。数据资产管理涵盖数据的整个生命周期,包括数据的创建、存储、处理、共享、使用和保护。它面临的挑战包括数据量的快速增长、数据类型的多样化和数据更新的迅速性。组织需要建立完善的数据管理体系,提高数据处理和分析能力,以应对这些挑战。同时,数据资产的分类与评估、共享与使用规范也是数据资产管理的重要组成部分,需要制定合理的标准和规范,确保数据共享的安全性和隐私保护,以及建立合理的利益分配和权益保障机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值