首页 > 其他 > 详细

LeetCode problem 10: Regular Expression Matching

时间:2017-11-18 20:31:16      阅读:207      评论:0      收藏:0      [点我收藏+]
class Solution {
	public:
		bool match(string s, string p, int ss, int ps){
			int psize = p.size();
			int ssize = s.size();
			while (ps < psize && ss < ssize){
				char c = p[ps];
				if (c != ‘.‘ && c != ‘*‘){
					if (c != s[ss]){
						return false;
					}
					ps ++;
					ss ++;
					continue;
				}
				if (c == ‘*‘){
					if (ps == 0){
						return false;
					}
					char p_last = s[ps-1];
					if (p_last == ‘.‘){
						p_last = s[ss-1];
					}
					int sss = ss;
					while (sss < ssize && p_last == s[sss]){
						if (match(s, p, ++sss, ps+1)){
							return true;
						}
					}
				}
				ss ++;
				ps ++;
			}
			return (ps == psize && ss == ssize);
		}
		bool isMatch(string s, string p) {
			return match(s, p, 0, 0);
		}
};

  

LeetCode problem 10: Regular Expression Matching

原文:http://www.cnblogs.com/nosaferyao/p/7857717.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!