探索LeetCode【0010】正则表达式匹配(已懂,未练习)

news2024/11/19 18:23:13

目录

  • 0.1 题目
  • 0.2 补充示例
  • 1. 参考B站视频
  • 2. 官方答案的评论-可用
  • 3. chatGPT的思路和解法-可用

0.1 题目

题目链接:【0010】正则表达式匹配

给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.''*' 的正则表达式匹配。

  • '.' 匹配任意单个字符
  • '*' 匹配零个或多个前面的那一个元素
    所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。

示例 1:

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

示例 2:

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

示例 3:

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

提示:

  • 1 <= s.length <= 20
  • 1 <= p.length <= 20
  • s 只包含从 a-z 的小写字母。
  • p 只包含从 a-z 的小写字母,以及字符 .*
  • 保证每次出现字符 * 时,前面都匹配到有效的字符

0.2 补充示例

来源视频

示例 4:

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

示例 5:

输入:s = "mississippi", p = "mis*is*p*"
输出:false

1. 参考B站视频

值得学习的视频,主要看思路

1.python版讲解已懂
在这里插入图片描述
2.java版讲解未懂

2. 官方答案的评论-可用

链接

class Solution {
public:
    bool match(string& s, string& p, int i, int j){
        if(i==0){
            return false;
        }
        return p[j-1]=='.' or s[i-1]==p[j-1];
    }
    bool isMatch(string s, string p) {
        int m = s.size();
        int n = p.size();
        vector<vector<bool>> memo(m+1, vector<bool>(n+1));
        memo[0][0] = true;
        for(int i=0;i<=m;i++){
            for(int j=1;j<=n;j++){
                if(p[j-1]!='*'){
                    memo[i][j] = match(s, p, i, j) ? memo[i-1][j-1] : false;
                }
                else{
                    memo[i][j] = match(s,p,i,j-1) ? memo[i][j-2] or memo[i-1][j] : memo[i][j-2]; 
                }
            }
        }
        return memo[m][n];

    }
};

3. chatGPT的思路和解法-可用

bool isMatch(string s, string p) {
    int m = s.length(), n = p.length();
    vector<vector<bool>> dp(m+1, vector<bool>(n+1));
    dp[0][0] = true;

    // 初始化第一行
    for (int j = 2; j <= n; j++) {
        dp[0][j] = dp[0][j-2] && p[j-1] == '*';
    }

    // 状态转移
    for (int i = 1; i <= m; i++) {
        for (int j = 1; j <= n; j++) {
            if (p[j-1] != '*') {
                dp[i][j] = dp[i-1][j-1] && (s[i-1] == p[j-1] || p[j-1] == '.');
            } else {
                dp[i][j] = dp[i][j-2] || (dp[i-1][j] && (s[i-1] == p[j-2] || p[j-2] == '.'));
            }
        }
    }

    return dp[m][n];
}

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

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

相关文章

2023 RSAC|和衷共济 共同应对网络安全挑战

作为全球最具规模的安全大会&#xff0c;2023年RSA Conference的落幕也为安全行业的“何去何从”带来一定的启发性。 今年大会的主题是“Strong together”&#xff0c;主要来自于海伦凯勒的名言: “ Alone we can do so little; together we can do so much. ” 纵观2022年…

做完这个测试项目,我终于决定辞职·····

很迷茫&#xff0c;然后过得非常不如意&#xff0c;倒不是上一年的职业目标没达到&#xff0c;而是接下来的路根本不知道如何走。在没解决这个问题之前&#xff0c;或者说没搞清楚自己的方向之前&#xff0c;是迟迟不能落笔的&#xff0c;啊不&#xff0c;应该是落键盘。 下班…

JavaWeb-RequestResponse的使用

Request&Response 今日目标 掌握Request对象的概念与使用掌握Response对象的概念与使用能够完成用户登录注册案例的实现能够完成SqlSessionFactory工具类的抽取 1&#xff0c;Request和Response的概述 Request是请求对象&#xff0c;Response是响应对象。这两个对象在我们…

德尔玛IPO首日破发,市值蒸发超4亿

今日&#xff08;5月18日&#xff09;&#xff0c;小米“代工厂”广东德尔玛科技股份有限公司&#xff08;下称“德尔玛”&#xff0c;301332.SZ&#xff09;正式在深交所挂牌上市。 德尔玛此次IPO募资净额为12.31亿元&#xff0c;开盘价为14.81元/股&#xff0c;与发行价持平…

Call to undefined function bcadd()

先介绍一下当前使用的环境。同学们可以比较一下&#xff0c;看本篇文章是否可以提供帮助。 docker 部署 nginx 1.24php 8.1-fpm 再介绍一下框架&#xff0c;使用的是 "laravel 9.33.0" 其实这里跟 laravel 框架和 nginx 是没太多关系的&#xff0c;因为我们主要是使…

MySQL高级_第09章_性能分析工具的使用

MySQL高级_第09章_性能分析工具的使用 在数据库调优中&#xff0c;我们的目标就是 响应时间更快&#xff0c;吞吐量更大。利用宏观的监控工具和微观的日志分析可以帮我们快速找到调优的思路和方式。 1. 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候&#xff0c;该…

Windows平台软件开发模型总结:V型模型、瀑布模型、迭代模型、增量模型、螺旋模型、原型模型

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天总结一下Windows平台软件开发模型总结&#xff1a;V型模型、瀑布模型、迭代模型、增量模型、螺旋模型、原型模型。 很多人可能知道了&#xff0c;那就是在我们浙江省&#xff0c;从2021年年初到现在&…

内网 monorepo 配置指南(PNPM、YARN)

此处的内网是指没办法连接互联网进行依赖下载的环境&#xff0c;本文以windows平台为例 背景说明 绝大部分政府机关、国有企业都是在内网开发&#xff0c;无法从互联网同步依赖&#xff0c;就需要另辟蹊径解决项目依赖的问题。 传统的单包项目还好&#xff0c;从互联网机器将…

兼顾降本与增效,我们对存算分离的设计与思考

“降本增效”是最近企业常被提及的关键字&#xff0c;作为新时代企业发展的数据大脑&#xff0c;企业大数据团队需要持续探索如何在有限资源下创造更多价值。本文将以场景为"引"&#xff0c;技术为"核"&#xff0c;介绍如何基于 StarRocks 全新的存算分离架…

软考软件设计师真题与答案解析

1、2020下半年基础知识&#xff08;上午题&#xff09; 1、某计算机系统的CPU主频为2.8GHz。某应用程序包括3类指令&#xff0c;各类指令的CPI(执行每条指令所需要的时钟周期数)及指令比例如’下表所示。执行该应用程序时的平均CPI为&#xff08; &#xff09;&#xff1b;运算…

2023 操作系统 R 复习大纲( 适用于软件 21 级)

目录 01.操作系统的定义 02.操作系统的基本类型及特征 1.批处理操作系统&#xff08;单、多道&#xff09; 2.分时操作系统 3.实时操作系统 03.操作系统的功能及特征 04.进程的定义、特征 05.进程基本状态及其转换原因 06.进程互斥、同步 07.进程控制块的内容、作用 …

Android Studio开发之路 (一)开发环境搭建以及问题记录

一、安装 Android Studio 安装配置教程 这个文章讲的很全面&#xff08;包括了jdk的配置&#xff09;&#xff0c;我安装了1.8.0版本的JDK 以及 2022.2.1版本的Android Studio ,安装目录都是自定义的&#xff0c;安装完成之后的目录如下&#xff08;项目目录也放到这里了&…

医院上线“报告中心”,实现报告查询“四个更好”

为进一步提升患者的就诊体验&#xff0c;不少医院部署云影像后&#xff0c;再次上线博为软件报告中心信息系统&#xff0c;患者和家属动动手指就能在自己手机上随时随地看到检查检验报告&#xff0c;彻底告别传统的纸质报告单方式&#xff0c;实现检查检验数据永久保存。 博为…

【Java多线程编程】wait与notify方法详解

前言 我们知道&#xff0c;线程的调度是无序的&#xff0c;但有些情况要求线程的执行是有序的。因此&#xff0c;我们可以使用 wait() 方法来使线程执行有序。 本期讲解 Java 多线程中 synchronized 锁配套使用的 wait 方法、notify方法和notifyAll方法&#xff0c;以及 wait 方…

jQuery 操作 DOM 及 CSS

jQuery 操作 DOM 及 CSS 1. jQuery 修改|获取页面元素文本及属性值 text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容&#xff08;包括 HTML 标签&#xff09; val() - 设置或返回表单字段的值 attr() - 方法用于获取属性值。 1.1 举例&#xff…

win11亮度条消失解决方法之一

一、前言 1、本人电脑情况&#xff1a;联想小新Pro16&#xff0c;win11家庭版 2、联想技术工程师三种方式联系方式&#xff08;需提供电脑背后的编号&#xff09;&#xff1a; 1&#xff09; 通过预装的联想电脑管家&#xff0c;获取在线人工专家支持&#xff08;管家链接 h…

【ETH】以太网----PHY芯片LAN8720A----电路原理图

一、LAN8720A----简介 LAN8720A 是低功耗的 10/100M 以太网 PHY 层芯片&#xff0c;I/0 引脚电压符合EEE802.3-2005 标准&#xff0c;支持通过 RMI 接口与以太网 MAC 层通信&#xff0c;内置 10-BASE-T/100BASE-TX 全双工传输模块&#xff0c;支持 10Mbps 和 100Mbps。 LAN87…

SpringMVC的请求与响应(请求映射路径、请求参数、日期类型参数传递 、响应json数据)

文章目录 1&#xff0c;PostMan工具的使用1.1 PostMan简介1.2 PostMan安装1.3 PostMan使用1.3.1 创建WorkSpace工作空间1.3.2 发送请求1.3.3 保存当前请求 2&#xff0c;请求与响应2.1 设置请求映射路径2.1.1 环境准备2.1.2 问题分析2.1.3 设置映射路径步骤1:修改Controller步骤…

Java基础面试题突击系列2

&#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我不迷路 ❤️《java面试核心知识》突击系列&#xff0c;持续更新… &#x1f490; 面试必知必会学习路线&#xff1a;Java技术栈面试系列SpringCloud项目实战学习路线 &#x1f4dd;再小的收获*365天…

以ChatGPT写诗为例,教你如何用AI软件创新性提问?

想用AI软件创作出动人的诗篇吗&#xff1f; ChatGPT 是一款人工智能软件&#xff0c;可以帮助你创作鼓舞人心的诗歌。它为您提供了一个强大的平台来探索您的创意方面。通过一组简单的问题&#xff0c;您只需点击几下就可以生成令人惊叹的诗歌。 要想让机器写诗&#xff0c;你…