博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode刷题正则表达式
阅读量:5095 次
发布时间:2019-06-13

本文共 1074 字,大约阅读时间需要 3 分钟。

题目链接:

这道题用到了动态规划:

关于动态规划请参考这篇博文:

写的非常详细。

在做题过程中我参考了leetcode上某大佬的文章

大概思想就是我们在建立解题模型时,分情况考虑对象的匹配规则,即: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
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]; }};

转载于:https://www.cnblogs.com/kk328/p/10732462.html

你可能感兴趣的文章
一道不知道哪里来的容斥题
查看>>
Win7 + VS2015 + CMake3.6.1-GUI + Makefile 编译开源库
查看>>
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
ORACLE 递归查询
查看>>
20172315 2017-2018-2 《程序设计与数据结构》实验三报告
查看>>
别把SEO当苦力活,做优化要讲究策略
查看>>
Django项目:CRM(客户关系管理系统)--41--33PerfectCRM实现King_admin编辑整张表限制
查看>>
关于时间
查看>>
面向对象 阶段性总结
查看>>
[Android] 开发第十天
查看>>
[html]window.open 使用示例
查看>>
.NET下使用socket.io随笔记录
查看>>
操作~拷贝clone()
查看>>
Java开发中的23种设计模式
查看>>
jQuery源码分析(2) - 为什么不用new jQuery而是用$()
查看>>
[转]【EL表达式】11个内置对象(用的少) & EL执行表达式
查看>>
ArrayList对象声明& arrayList.size()
查看>>
并发编程 线程
查看>>