'.' Matches any single character.
'*' Matches zero or more of the preceding element.

The matching should cover the entire input string (not partial).

The function prototype should be:
bool isMatch(const char *s, const char *p)

Some examples:
isMatch("aa","a") → false
isMatch("aa","aa") → true
isMatch("aaa","aa") → false
isMatch("aa", "a*") → true
isMatch("aa", ".*") → true
isMatch("ab", ".*") → true
isMatch("aab", "c*a*b") → true

对于我这种算法菜鸟都不算的门外汉,自然写出了又长又臭的if else考虑了一大堆的case,结果还是各种bug各种case通不过。。。醉了,早好好学习也不至于现在这么狼狈,还好不是太晚。

最终参考了http://blog.csdn.net/hopeztm/article/details/7992253浙大牛人的思路加代码

这题主要运用动态规划(DP):(这里用s指向源串,p指向待匹配串)

跟上题回文匹配类似使用dp[i][j]表示s[0...strlen(s)]和p[0...strlen(p)]的匹配情况

if  *(p+1)  != '*'

if *p == *s       dp[i][j]  = dp[i+1][j+1]

  else return false

if *(p+1) == '*'   这是需要考虑拓展.*的情况来匹配,并且每一步都要增加s,如果匹配返回true,否则返回通配符匹配后的结果。

这里面由dp[i][j]到dp[i+1][j+1]就是迭代的过程,后面每次增加s检查匹配也是迭代,若增加s的过程无匹配,则退回到最开始通配符匹配环节。

最新文章

  1. 总结-java
  2. 旅游行业的手机App Top5
  3. easyUI的formatter使用
  4. Maven学习之 仓库镜像
  5. Excel 、数据库 一言不合就转换 (zhuan)
  6. HTML5 视频规范简介
  7. Cocos2d-x下Lua调用自定义C++类和函数的最佳实践[转]
  8. highCharts 图表统计控件使用方法
  9. 2、Khala的安装
  10. 手机自动化测试:appium源码分析之bootstrap八
  11. Linux 基础(5)
  12. JSONP不支持循环调用
  13. mysql 5.7主从安装和配置
  14. Luogu3768简单的数学题
  15. 转 -Filebeat + Redis 管理 LOG日志实践
  16. 洛谷P3338 力
  17. 利用exif.js解决手机上传竖拍照片旋转90\180\270度问题
  18. Java Networking: UDP DatagramSocket (翻译)
  19. FORWARD转发链的功能
  20. 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形网格惰性加载节点

热门文章

  1. Appium iOS万能的定位方式--Predicate(iOSNsPredicate)
  2. Django入门与实战
  3. CSP201403-1:相反数
  4. ubuntu中tensorflow安装
  5. C# 结构类型与类的区别
  6. jira+mysql+破解+中文+compose
  7. DFS(6)——hdu1342Lotto
  8. 山科SDUST OJ Problem J :连分数
  9. EasyUI 显示表单数据 小记
  10. linux服务器su之后变成bash-4.1#