剑指 Offer 19: 正则表达式匹配

news2024/11/24 5:32:00

可能存在一个现象,就是aaab,然后a*ab,那么这样*只能代表一个a。

这道题可以使用动态规划的方式来解决。

这道题就是状态的判断:是否两个都为0?只有两个都为0才为true,并且判断*,有两个情况:为*或者不为*,不为*直接前移判断比较,否则就两种情况,忽略或者比较二选其一,只要两个或有一个成立即可!

class Solution {
    public boolean isMatch(String s, String p) {
        int m = s.length(), n = p.length();
        boolean[][] f = new boolean[m+1][n+1];//得加1!
        //长度未必相同,所以可能是j-2/i-1后相同
        for(int i = 0; i <= m; i++){//要有等于!因为f是m+1,n+1!
            for(int j = 0; j <= n; j++){
                if(j == 0)
                    f[i][j] = i == 0;//B为0但A不为0
                else{
                    if(p.charAt(j-1) != '*'){//不等于*就是直接比较
                        // if(j>1 && p.charAt(j-2))
                        if(i >= 1 && (p.charAt(j-1) == s.charAt(i-1)
                         || p.charAt(j-1) == '.' ))
                            f[i][j] = f[i-1][j-1];//第一次算
                        }
                        else{//等于,那么前移
                            if(j >= 2){//直接忽略,不等于,那么就忽略
                                f[i][j] |= f[i][j-2];//第二次算,不看
                        }
                            if(j >= 2 && i >= 1 && 
            (s.charAt(i-1) == p.charAt(j-2) || p.charAt(j-2) == '.'))
                //p不动s前移一位,就是看的情况
                                f[i][j] |= f[i-1][j];
                            
                        }
                }
            }
        }
        return f[m][n];
    }
}

 

 

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

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

相关文章

Docker WebRTC容器部署方案

文章目录 WebRTC简介WebRTC Docker容器部署优势方案&#xff08;mpromonet/webrtc-streamer&#xff09;步骤 WebRTC简介 WebRTC&#xff08;Web Real-Time Communication&#xff09;是一种开放的实时通信技术&#xff0c;它允许浏览器之间进行音频、视频和数据的实时传输。W…

从古代八卦探究计算机的八进制

八进制&#xff0c;即八卦&#xff0c;是中国古代哲学体系中非常重要的一个概念&#xff0c;它被广泛应用于易经、道家、儒家等诸多领域。随着计算机科学的快速发展&#xff0c;人们开始思考&#xff1a;八进制是否可以应用到计算机上&#xff1f; 一、什么是八进制&#xff1…

Javaee技术目的总结

一.前节回顾 在前一节中&#xff0c;我们了解了&#xff1a; 1.将中央控制器中的Action容器&#xff0c;变成可控制! 2.针对于反射调用业务代码&#xff0c;最终页面跳转 3.jsp页面参数传递后台的代码优化字段太多有影响&#xff01; 二.项目部署前期准备工作 1.项目运行环境…

c语言 va_start/va_end函数

c语言 va_satrt和va_end函数介绍 头文件&#xff1a;#include <stdarg.h> 函数原型&#xff1a;void va_start(va_list ap, last) 和 void va_end(va_list ap); 可以被参数数量和类型可变的函数调用。 可变参数用…&#xff08;3个省略号表示可变参数列表&#xff09; …

深入理解 http 反向代理

要理解什么是 反向代理(reverse proxy) , 自然你得先知道什么是 正向代理(forward proxy). 另外需要说的是, 一般提到反向代理, 通常是指 http 反向代理, 但反向代理的范围可以更大, 比如 tcp 反向代理, 在这里, 不打算讨论 tcp 之类的反向代理, 当文中说到反向代理时, 指的就是…

C++day5

2、 #include <iostream> using namespace std; static int blood 10000; class hero { protected:string name;int hp;int attack; public:hero(){}//无参构造hero(string name,int hp,int attack):name(name),hp(hp),attack(attack){}//有参构造virtual void Atk(){b…

使用supervisor管理进程

写目录 一、supervisor简介二 、supervisor安装2.1下载supervisor2.2配置文件详解2.3把squid服务加入到supervisor管理当中 一、supervisor简介 supervisor是Python开发的c/s服务&#xff0c;是Linux系统下的进程管理工具。可以监听、启动、停止、重启一个或多个进程用supervi…

卡尔曼滤波原理和使用

随着传感技术&#xff0c;机器人&#xff0c;自动驾驶等不断发展&#xff0c;对控制系统的精度以及稳定性要求越来越高。卡尔曼滤波作为一种状态最优估计方法&#xff0c;应用也越来越普遍、 对于Kalman Filter的理解&#xff0c;用过都知道“黄金五条”公式&#xff0c;且通过…

pytorch实战13:基于pytorch实现YOLOv1(长长文)

基于pytorch实现YOLOv1&#xff08;长长文&#xff09; 前言 ​ 本篇文章的目的是记录自己实现yolo v1的过程&#xff0c;在此过程中&#xff0c;参考了许多开源的代码和博客&#xff0c;赞美大佬们。 参考文献和代码 YOLO v1代码参考&#xff1a;&#xff08;读书人的事情&…

华为OD机试真题 Python 实现【猜字谜】【2023Q1 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述补充说明:四、解题思路五、Python算法源码六、效果展示1、输入2、输出3、说明一、题目描述 小王设计了一人简单的清字谈游戏,游戏的迷面是一人错误的单词,比如nesw,玩家需要猜出谈底库中正确的单词。猜中的要求如 对于某个谜面和…

武汉抖音seo,抖音关键词排名

抖音seo怎么做 抖音作为一款热门的社交娱乐应用&#xff0c;其SEO关键词排名对于提升内容曝光和用户流量非常重要。 1. 关键词研究&#xff1a;在进行SEO关键词排名时&#xff0c;首先需要进行关键词研究&#xff0c;了解用户在抖音上搜索的热门关键词。可以通过使用相关的关…

如何使用ArcGIS自定义图框样式

GIS制图过后&#xff0c;一般都会涉及到出图&#xff0c;大家肯定都希望自己的出图成果越美观越好&#xff0c;除了图本身之外&#xff0c;还可以从周边的一些修饰入手&#xff0c;比如图框&#xff0c;那么今天就给大家讲解一下如何自定义ArcGIS图框风格&#xff0c;希望能对大…

Docker-Dockerfile-DockerCompose的那些事

文章目录 一、Docker背景1.1 环境不一致1.2 隔离性1.3 弹性伸缩1.4 学习成本 二、Docker介绍2.1 Docker的由来2.2 Docker的思想 三、Docker的安装3.1 下载Docker依赖的环境3.2 指定Docker镜像源3.3 安装Docker3.4 Docker服务启停3.5 Docker容器运行解析3.6 Docker运行流程解析3…

暑期学JavaScript【第五天】

BOM Browser Object Model&#xff0c; 浏览器对象模型 DOM是BOM的一部分 1.navigator 用于判断当前的用户端。 用navigator.userAgent获取 2. location location.href www.baidu.com&#xff0c; 赋值后&#xff0c;执行直接跳转到百度location.search; 获取地址中?后面部…

maven查看jar的pom引入来源

从idea中点击 Maven Projects&#xff0c;后点击Show Dependencies&#xff0c;如图所示 得到依赖关系图&#xff0c;如下 在页面进行 Ctrl F 搜索需要的 Jar 名称 例&#xff1a;查找 spring-beans 双击框定的地方&#xff0c;就能进入到对应的pom文件 查找依赖关系 1、…

第三方库介绍——tslib库

文章目录 tslib 简介tslib 框架分析tslib 的框架 交叉编译、测试 tslibtslib应用程序 tslib 简介 tslib 是一个触摸屏的开源库&#xff0c;可以使用它来访问触摸屏设备&#xff0c;可以给输入设备添加各种“ filter ”( 过滤器&#xff0c;就是各种处理) 编译 tslib 后&#…

C语言学习准备-编辑器选择

今天继续给大家更新C语言经典案例 今天的案例会比昨天稍微有一些难度&#xff0c;但是同时还是非常经典的案例 本来是想给大家继续更新C语言经典案例&#xff0c;但是有朋友反应C语言编辑器的选择&#xff0c;刚好我自己也是想更换一下C语言的编辑器&#xff0c;跟大家分享一下…

TX Text Control 31.SP3 for Windows Forms Crack

Windows 窗体应用程序的文档处理 将文档编辑、创建和 PDF 生成添加到 Windows 窗体应用程序中。 视窗用户界面 功能齐全的文档编辑器 TX 文本控件是一种完全可编程的丰富编辑控件&#xff0c;可在专为 Visual Studio 设计的可重用组件中为开发人员提供广泛的文字处理功能。它…

力扣 77. 组合

题目来源&#xff1a;https://leetcode.cn/problems/combinations/ C题解&#xff08;来源&#xff09;&#xff1a; 代码随想录 回溯三部曲&#xff1a;将回溯问题看成一棵N叉树&#xff0c;n为广度&#xff0c;k为深度。 递归函数的返回值以及参数&#xff1a;需提前定义两个…

cookie 和 httpSession

目录 1.认识Cookie对象与HttpSession 1.1概念 1.2会话管理 2.cookie的使用 2.1cookie使用机制 2.2cookie不同属性的含义 2.2修改或者删除Cookie 2.3 Cookie对象的特点 2.4 Cookie对象的创建 2.5 Cookie中数据的获取 2.6 Cookie不支持中文的解决方案 2.7持久化Cooki…