leetcode Regular Expression Matching
2016-03-10 10:54
375 查看
题目链接
如果看不懂我的代码。下面我贴上一个牛人的代码
public class Solution { public boolean isMatch(String s, String p) { return help(s,0,p,0); } public boolean help(String s,int startS,String p,int startP) { if(startP>=p.length()) { return startS>=s.length(); } char pchar=p.charAt(startP); if(startP!=p.length()-1) { char pNextChar=p.charAt(startP+1); if(pNextChar=='*') { while(startS<s.length()&&(s.charAt(startS)==pchar||pchar=='.')) { if(help(s, startS, p, startP+2)) { return true; } startS++; } return help(s, startS, p, startP+2); } else { if(startS<s.length()&&(s.charAt(startS)==pchar||pchar=='.')) { return help(s, startS+1, p, startP+1); } return false; } } else { if(startS<s.length()&&(s.charAt(startS)==pchar||pchar=='.')) { return help(s, startS+1, p, startP+1); } return false; } } }
如果看不懂我的代码。下面我贴上一个牛人的代码
#include<iostream> using namespace std; bool isMatch(const char *s, const char *p) { // Start typing your C/C++ solution below // DO NOT write int main() function if (*p == 0) return *s == 0; if (*(p+1) != '*') { if (*s != 0 && (*p == *s || *p == '.')) return isMatch(s+1, p+1); return false; } else { // *s == *p while (*s != 0 && (*s == *p || *p == '.')) { if (isMatch(s, p+2)) return true; s++; } return (isMatch(s, p+2)); } } int main() { if(isMatch("ab",".*c")) { cout<<"yes"<<endl; } else { cout<<"no"<<endl; } }
相关文章推荐
- iOS开发笔记之--NSString 过滤空白字符和换行符
- 数据库面试常问的一些基本概念
- iReport+JasperReport实现数据库记录导出到pdf文档
- c++第一次实验-1
- windows下把ruby脚本转换成exe
- 学习进度(一至五周)
- VS2013配置WTL91_5321_Final
- js中== 和===中的区别
- Android5.0+(CoordinatorLayout)
- 【转】成为Java顶尖程序员 ,看这10本书就够了
- 正则表达式
- ssh框架整合概述
- vue+webpack学习记录
- 毕业论文写作Tips
- 博文
- CocoaPods在项目中的使用
- Android 以及java部分面试题详解(附详细答案)
- 第一次上机实验1-1
- 我的第1次C++实验
- 我的第2次C++实验