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

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

说明:

s 可能为空,且只包含从 a-z 的小写字母。
p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。
示例 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

题解:

dp[i][j]表示s的前i个字符可以被p的前j个字符匹配。

对于s[i]和p[j],如果s[i]===p[j] || p[j]=='.'的话,dp[i][j]=dp[i-1][j-1];

如果p[j]=='*' ,

那么如果s[i]!=p[j-1] && p[j-1]!='.' 那么,dp[i][j]=dp[i][j-2];

否则,dp[i][j] = dp[i-1][j]     // 匹配多个

       || dp[i][j-1]  //匹配一个

       || dp[i][j-2];   // 一个也不匹配

参考代码:

 class Solution {
public:
bool isMatch(string s, string p) {
s=" "+s;p=" "+p;
int n=s.length(),m=p.length();
bool dp[n+][m+];
memset(dp,false,(n+)*(m+));
dp[][]=true; for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
{
if(s[i-]==p[j-] || p[j-]=='.')
dp[i][j]=dp[i-][j-];
else if(p[j-]=='*')
{
if(s[i-]!=p[j-]&&p[j-]!='.')
dp[i][j]=dp[i][j-];
else dp[i][j]=dp[i-][j]||dp[i][j-]||dp[i][j-];
}
} return dp[n][m];
}
};

C++

最新文章

  1. 源码编译Nodejs 4.6 on CentOS6
  2. 一种简单的实现:Android一键换肤功能
  3. windows下调用外部exe程序 SHELLEXECUTEINFO
  4. redis3.0 集群实战1 -- 安装和配置
  5. iptables配置服务器端口转发
  6. Socket 两平台互相 通信 .NET
  7. Sandcastle是什么
  8. Selection sort
  9. Python生成器与yield
  10. 防止横竖屏时,iphone自动缩放的一段js代码
  11. Ruby on Rails 實戰聖經阅读(二)
  12. lucene 查询 (转载)
  13. PHP的重载及魔术方法
  14. HttpURLConnection 传输数据和下载图片
  15. SQL Server 2016 查询存储性能优化小结
  16. fiddler抓包常用功能详解
  17. 推荐一些socket工具,TCP、UDP调试、抓包工具 (转载)
  18. 使用odbc时报错,驱动程序和应用程序之间的体系结构不匹配
  19. java 常见判断题
  20. python之解析json

热门文章

  1. Linux和云供应商Red Hat被IBM以34亿美元的价格收购
  2. ROS学习笔记8-rqt_console和roslaunch
  3. 一、什么是Velocity及简单示例
  4. hadoop常用的操作指令
  5. 7. 通过JDBC源码来分析线程上下文类加载器以及SPI的使用
  6. 8张图片掌握JS原型链
  7. i春秋-密码-IceCTF-Alien Message
  8. 九:File类,文件的操作
  9. BUU re1
  10. Adapter之GridAdapter