Leetcode--RegularExpressionMatching
来源:互联网 发布:传奇盛世光翼进阶数据 编辑:程序博客网 时间:2024/06/13 02:31
可以把问题简化成如下的递归形式
d[i][j]表示String s[0...i]与Pattern p[0...j]是否匹配
case1:p[j+1]!='*', 比较s[i]与p[j]。if(s[i]==p[j])d[i][j]=d[i-1][j-1] else return false。如果p[j]==‘.’,那么作相等处理
case2:p[j+1]=='*',依次调用d[i][j-1],d[i-1][j-2]...d[n][j-2]直到没有可以匹配的s[i]。如果在此期间匹配则返回true,不然调用d[n-1][j-2]
public boolean isMatch(String s, String p) { return ismatch(s,s.length()-1,p,p.length()-1); } public boolean ismatch(String s,int sindex,String p,int pindex){ if(sindex>=0&&pindex<0)return false; if(sindex<0&&pindex<0)return true; if(sindex<0)return isNull2(p,pindex); if(sindex>=0){ if(p.charAt(pindex)=='*')return ismatch(s,sindex,p,pindex-1); else if(pindex==p.length()-1){ if(s.charAt(sindex)==p.charAt(pindex)||p.charAt(pindex)=='.')return ismatch(s,sindex-1,p,pindex-1); else return false; } if(p.charAt(pindex+1)!='*'){ if(s.charAt(sindex)==p.charAt(pindex)||p.charAt(pindex)=='.')return ismatch(s,sindex-1,p,pindex-1); else return false; }else{ while(s.charAt(sindex)==p.charAt(pindex)||p.charAt(pindex)=='.'){ if(ismatch(s,sindex,p,pindex-1))return true; sindex--; if(sindex<0)break; } } } if(sindex>=0)return ismatch(s,sindex,p,pindex-1); if(sindex<0&&isNull(p, pindex))return true; if(sindex<0&&pindex>=0)return false; return false; } public boolean isNull(String p,int pindex){ if(p.charAt(pindex)=='*') pindex--; while(p.charAt(pindex+1)=='*'){ if(pindex==0)return true; pindex=pindex-2; } return false; } public boolean isNull2(String p,int pindex){ pindex--; while(p.charAt(pindex+1)=='*'){ if(pindex==0)return true; pindex=pindex-2; } return false; }
0 0
- Leetcode--RegularExpressionMatching
- RegularExpressionMatching
- 3.6RegularExpressionMatching
- leetcode10.RegularExpressionMatching
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- 智慧树
- 11g查看性能慢sql的一个方法
- Android 5.0 documentation CHM 版本 下载
- Platform 驱动架构
- QT4.8.6 Designer 集成VTK5.10.1 中QVTKWidgets插件
- Leetcode--RegularExpressionMatching
- caffe学习,持续更新
- Linux网卡配置与绑定
- linux常用指令(二)
- nefu 553 念珠的差异
- 关于cron和crond,crontab以及bash脚本的写法等知识 cron的语法用法
- 操作系统--文件管理
- POJ - 2239 Selecting Courses 二分图 最大匹配
- 函数重载概念本质