【剑指offer】面试题19:正则表达式匹配(Java)

请实现一个函数用来匹配包含'. '和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但与"aa.a"和"ab*a"均不匹配。

示例 1:

输入:
s = "aa"
p = "a"
输出: false
解释: "a" 无法匹配 "aa" 整个字符串。
示例 2:

输入:
s = "aa"
p = "a*"
输出: true
解释: 因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 'a'。因此,字符串 "aa" 可被视为 'a' 重复了一次。
示例 3:

输入:
s = "ab"
p = ".*"
输出: true
解释: ".*" 表示可匹配零个或多个('*')任意字符('.')。
示例 4:

输入:
s = "aab"
p = "c*a*b"
输出: true
解释: 因为 '*' 表示零个或多个,这里 'c' 为 0 个, 'a' 被重复一次。因此可以匹配字符串 "aab"。
示例 5:

输入:
s = "mississippi"
p = "mis*is*p*."
输出: false
s 可能为空,且只包含从 a-z 的小写字母。
p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。

思路:动态规划

dp[i][j]表示s的前i个字符和p的前j个字符是否匹配

可分为以下情况:

1.s[i]=p[i]

dp[i][j]=dp[i-1][j-1]

2.s[i]!=p[i]

2.1  p[i] =.

dp[i][j]=dp[i-1][j-1]

2.2  p[i]=*   *可以匹配0个,1个以及多个

2.2.1  当s[i-1]=p[i-1]||p[i-1]=.时

可以匹配0,1,多

dp[i][j]=dp[i][j-2]||dp[i][j-1]||dp[i-1][j]

2.2.2 当s[i-1]!=p[i-1]时,匹配0个

dp[i][j]=dp[i][j-2]

代码:

class Solution {

    public boolean isMatch(String s, String p) {

        boolean dp[][] = new boolean[s.length()+1][p.length()+1];

         dp[0][0] = true;

            for(int j=1;j<=p.length();j++)

            {   

                if(p.charAt(j-1)=='*'&&dp[0][j-2])

                    dp[0][j] = true;

            }

        for(int i=1;i<=s.length();i++)

        {

            for(int j=1;j<=p.length();j++)

            {

                if(s.charAt(i-1)==p.charAt(j-1))

                {

                    dp[i][j] = dp[i-1][j-1];

                }

                else if(p.charAt(j-1)=='.')

                {

                    dp[i][j] = dp[i-1][j-1];

                }

                else if(p.charAt(j-1)=='*')

                {

                    if(j>=2)

                    {

                        if(s.charAt(i-1)==p.charAt(j-2)||p.charAt(j-2)=='.')

                        {

                            dp[i][j] = dp[i][j-1]||dp[i][j-2]||dp[i-1][j];

                        }

                        else

                        {

                            dp[i][j] = dp[i][j-2];

                        }

                    }

                    

                }

                else

                {

                    dp[i][j]=false;

                }

            }

        }

        return dp[s.length()][p.length()];

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试-重写基础功能函数

重写基础函数 1. 字符串拷&#xff1a;strcpy() 函数strcpy的原型是char* strcpy(char* des , const char* src)&#xff0c;des 和 src 所指内存区域不可以重叠且 des 必须有足够的空间来容纳 src 的字符串。 char* strcpy( char* dst, const char* src ) {assert( NULL ! ds…

第一次,人类在人工神经网络中发现了“真”神经元

来源&#xff1a;学术头条本文经授权转载自机器之心&#xff08;almosthuman2014&#xff09;OpenAI 的研究者们在人工神经网络 CLIP 上发现了「真」神经元&#xff0c;这种机制解释了 AI 模型对令人惊讶的视觉呈现进行分类时&#xff0c;为何拥有如此的准确性。研究人员表示&a…

【剑指offer】面试题21:调整数组顺序使奇数位于偶数前面(Java)

输入一个整数数组&#xff0c;实现一个函数来调整该数组中数字的顺序&#xff0c;使得所有奇数位于数组的前半部分&#xff0c;所有偶数位于数组的后半部分。 示例&#xff1a; 输入&#xff1a;nums [1,2,3,4] 输出&#xff1a;[1,3,2,4] 注&#xff1a;[3,1,2,4] 也是正确…

#35 string(缩点+动态规划)

容易发现有了交换相邻字符的操作后&#xff0c;只要字符串所含有的字符种类和数量相同其就是等价的。这样的状态只有n^3级别&#xff0c;将其抽象成点子串变换抽象成边后就是求最长路径了&#xff0c;缩点dp解决。 码量巨大&#xff0c;不是很明白要怎样才能用3k写完。 #includ…

AI破解脑电波,准确率超80%!高度还原你眼中最美的ta

本文转自公众号&#xff1a;新智元一千个人眼中有一千个哈姆雷特。由于主观差异&#xff0c;人类的审美有千万种。对于个人偏好的观察&#xff0c;人类尚且还需要思考揣摩&#xff0c;何况是机器&#xff0c;如何做到呢&#xff1f;但最近赫尔辛基大学和哥本哈根大学的一个研究…

【剑指offer】面试题22:链表中倒数第k个节点(Java)

输入一个链表&#xff0c;输出该链表中倒数第k个节点。为了符合大多数人的习惯&#xff0c;本题从1开始计数&#xff0c;即链表的尾节点是倒数第1个节点。例如&#xff0c;一个链表有6个节点&#xff0c;从头节点开始&#xff0c;它们的值依次是1、2、3、4、5、6。这个链表的倒…

svn安装配置

1、安装 #rpm -q subversion #yum -y install subversion 2、创建仓库 #mkdir -p /var/svn/svnrepos #svnadmin create /var/svn/svnrepos 3、修改权限控制文件authz #cd /var/svn/svnrepos/conf/ #vi authz 4、修改账号密码文件passwd #vi passwd 5、修改svn服务配置文件svnse…

委员建议开辟多种科研资助模式,呼唤“科研悬赏制”

本文资源来源自&#xff1a;中国新闻网转自公众号&#xff1a;科奖中心“创新的力量蕴藏在全社会之中&#xff0c;创新的资源理应向全社会开放。”全国政协委员&#xff0c;民盟中央常委、宁夏区委会主委冀永强近日接受中新社记者采访时表示&#xff0c;应积极鼓励探索“科研悬…

【剑指offer】面试题24:反转链表(Java)

定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制&#xff1a; 0 < 节点个数 < 5000 代码&#xff1a; /** * De…

入局智慧城市,科技互联网巨头路在何方?

来源&#xff1a;亿欧智库我国已进入智慧城市建设新时期。各大巨头先后入局&#xff0c;拓展云服务场景&#xff0c;赋能政务管理与生产生活的方方面面。未来&#xff0c;场景延展、生态构建与人文关怀将成为智慧城市发展的大趋势。随着新基建政策、“十四五”规划和二〇三五年…

【剑指offer】面试题26:树的子结构(Java)

输入两棵二叉树A和B&#xff0c;判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构&#xff0c; 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A: 3 / \ 4 5 / \ 1 2 给定的树 B&#xff1a; 4 / 1 返回 true&#xff0c;因为…

什么是道德?

什么是道德&#xff1f; 热爱青年 百家号17-12-0615:23《什么是道德》 盖凡圣哲之学&#xff0c;不知有多少被后人歪曲谬解&#xff0c;长而久之&#xff0c;错误的反倒变成真理&#xff0c;害人不浅。 比如“道德”之说。绝大多数人理解成一种伦理概念。我们从小带大受到的洗脑…

马斯克的星际飞船SN10又炸了,但技术却向前迈出一大步!

来源&#xff1a;世界先进制造技术论坛(AMT)编辑&#xff1a;小艾 当地时间2021年3月3日&#xff0c;“钢铁侠”马斯克旗下太空探索公司Space X启动星际飞船&#xff08;Starship&#xff09;原型SN10的10公里飞行测试。在德克萨斯州进行高空试飞后&#xff0c;首次成功着陆&am…

【剑指offer】面试题27:二叉树的镜像(Java)

请完成一个函数&#xff0c;输入一个二叉树&#xff0c;该函数输出它的镜像。 例如输入&#xff1a; 4 / \ 2 7 / \ / \ 1 3 6 9 镜像输出&#xff1a; 4 / \ 7 2 / \ / \ 9 6 3 1 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3…

Elasticsearch 5.6.5 安装head插件

head安装包&#xff0c;下载地址&#xff1a;https://github.com/mobz/elasticsearch-head/archive/master.zip head 插件不能放在elasticsearch-5.6.5文件夹里&#xff0c;head 插件需要单独放&#xff0c;单独去执行&#xff1b;所以在elasticsearch-5.6.5同级目录下解压了 h…

MEMS传感器的下一轮技术变革

来源&#xff1a;麦姆斯咨询例如&#xff0c;红外探测器和微流控器件市场就在新冠肺炎大流行中获得了现象级的大幅增长。此外&#xff0c;疫情带来的居家隔离、远程办公&#xff0c;推动了5G部署、“非接触”语音交互以及数据中心等应用发展&#xff0c;从而加速了射频滤波器、…

【剑指offer】面试题28:对称的二叉树(Java)

请实现一个函数&#xff0c;用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样&#xff0c;那么它是对称的。 例如&#xff0c;二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1…

当量子计算遇到机器学习

作者&#xff1a; Dr.Alessandro Crimi 译者&#xff1a; 苏本如出品&#xff1a;CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;量子计算和机器学习已经成为当今炙手可热的话题。排除一些明显的炒作外&#xff0c;这当中也有一些真正的基础。随着传统计算技术的发展…

【剑指offer】面试题29:顺时针打印矩阵(Java)

输入一个矩阵&#xff0c;按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&#xff1a; 输入&#xff1a;matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]…

王贻芳院士:我们的科技管理过度强调竞争,缺乏稳定支持

来源&#xff1a; 科学网作者&#xff1a;倪思洁“我们中国的GDP大概很快会实现世界第一&#xff0c;我们什么时候也能在纯科学方面对世界有重大贡献呢&#xff1f;”3月7日&#xff0c;全国人大代表、中科院院士、中科院高能物理研究所所长王贻芳在江苏代表团上发言说。王贻芳…