leetcode刷题正则表达式
题目链接:https://leetcode-cn.com/problems/regular-expression-matching/
这道题用到了动态规划:
关于动态规划请参考这篇博文:https://blog.csdn.net/u013309870/article/details/75193592
写的非常详细。
在做题过程中我参考了leetcode上某大佬的文章https://leetcode.com/problems/regular-expression-matching/discuss/5684/9-lines-16ms-c-dp-solutions-with-explanations
大概思想就是我们在建立解题模型时,分情况考虑对象的匹配规则,即:p[j-1]==’*’和其他情况,
然后在分别加以记录就可以了,但是我们开始建立的是bool型的容器,所以需要考虑相应点的bool变量的表示
ifp[j-1]==’*’s{cur[j-1]=cur[j-2]||(i&&cur[j]&&(s[i-1]==p[j-2]||p[j-1==’.’]));}
else{cur[i]=i&&pre&&(s[i-1]==p[j-1]||p[j-1]==’.’)}
最后再进行返回即可,完整c++版代码如下:
class Solution {
public:
    bool isMatch(string s, string p) {
        int m=s.size(),n=p.size();
        vector<bool> cur(n+1,false);
        for(int i=0;i<=m;i++)
        {
            bool pre=cur[0];
            cur[0]=!i;
            for(int j=1;j<=n;j++)
            {
                bool temp=cur[j];
                if(p[j-1]=='*')
                {
                    cur[j]=cur[j-2]||(i&&cur[j]&&(s[i-1]==p[j-2]||p[j-2]=='.')) ;
                }
                else
                {
                    cur[j]=i&&pre&&(s[i-1]==p[j-1]||p[j-1]=='.');
                }
                pre=temp;
            }
        }
        return cur[n];
    }
};
leetcode刷题正则表达式的更多相关文章
- Leetcode刷题记录(python3)
		Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ... 
- C#LeetCode刷题-动态规划
		动态规划篇 # 题名 刷题 通过率 难度 5 最长回文子串 22.4% 中等 10 正则表达式匹配 18.8% 困难 32 最长有效括号 23.3% 困难 44 通配符匹配 17.7% ... 
- C#LeetCode刷题-字符串
		字符串篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串 24.6% 中等 5 最长回文子串 22.4% 中等 6 Z字形变换 35.8% 中等 8 字符串转整数 (atoi) ... 
- LeetCode刷题专栏第一篇--思维导图&时间安排
		昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ... 
- leetcode 刷题进展
		最近没发什么博客了 凑个数 我的leetcode刷题进展 https://gitee.com/def/leetcode_practice 个人以为 刷题在透不在多 前200的吃透了 足以应付非算法岗 ... 
- LeetCode刷题指南(字符串)
		作者:CYC2018 文章链接:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Leetcode+%E9%A2%98%E8%A7% ... 
- leetcode刷题记录--js
		leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ... 
- LeetCode刷题总结之双指针法
		Leetcode刷题总结 目前已经刷了50道题,从零开始刷题学到了很多精妙的解法和深刻的思想,因此想按方法对写过的题做一个总结 双指针法 双指针法有时也叫快慢指针,在数组里是用两个整型值代表下标,在链 ... 
- LeetCode刷题总结-数组篇(上)
		数组是算法中最常用的一种数据结构,也是面试中最常考的考点.在LeetCode题库中,标记为数组类型的习题到目前为止,已累计到了202题.然而,这202道习题并不是每道题只标记为数组一个考点,大部分习题 ... 
随机推荐
- vue根据ajax绑定数数。。
			<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- python的多线程
			1.多线程的例子 import threading #首先导入threading模块,这是使用多线程的前提 from time import ctime,sleep def music(func): ... 
- 五十八、linux 编程——UDP 编程 广播
			58.1 广播介绍 58.1.1 介绍 广播实现一对多的通讯 它通过向广播地址发送数据报文实现的 58.1.2 套接字选项 套接字选项用于修饰套接字以及其底层通讯协议的各种行为.函数 setsocko ... 
- Ubuntu16.04安装NVIDA驱动和CUDA
			该GPU是计算卡,不会用做显示,所以如果你希望自己的显示使用GPU,本方法可能失效. 服务器配置: CPU: E5-母鸡 GPU: NVIDIA Tesla K40c 操作系统:Ubuntu 16. ... 
- .net core 2.0 报错:error NU1102: Unable to find package 。。。
			这种是nuget无法还原的问题.解决问题的方法: 在项目文件所在的目录下创建文件:NuGet.Config 里面内容: "?> <configuration> <pa ... 
- Visual Studio - File Properties (Build Action, Copy to Output Directory)
			Ref: MSDN (https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/0c6xyb ... 
- SSM增删改查
			闲着无聊配置一遍SSM以及添加功能增删改查,如下图,其中坎坷也挺多!!! 1.工程如下图.(请忽略红叉,没有错误) 2.首先配置pom.xml文件. <project xmlns="h ... 
- 【Ubuntu 18.04 搭建VNC服务器】
			https://www.jianshu.com/p/f58fe5cdeb5f 桌面共享 Ubuntu 18.04自带桌面共享,可以将物理桌面共享给VNC.但是无法创建新的桌面. 具体参考 https: ... 
- PDF怎么添加文字水印与图片水印
			现在是个知识分享时代,但不可避免的盗版也无处不在,不知道在我们大家身边有没有遇到过这样的情况:自己煞费苦心制作的PDF文档不知道在什么时候就会被别人给盗用了,那么如何才能尽量避免这个问题呢?今天带大家 ... 
- SpringCloud使用Feign调用其他客户端带参数的接口,传入参数为null或报错status 405 reading IndexService#del(Integer);
			SpringCloud使用Feign调用其他客户端带参数的接口,传入参数为null或报错status 405 reading IndexService#del(Integer); 第一种方法: 如果你 ... 
