博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode Regular Expression
阅读量:7191 次
发布时间:2019-06-29

本文共 1098 字,大约阅读时间需要 3 分钟。

 

总结

1. 得到一个教训, 对于模拟题来说, 需要检查为空和越界两种情况

2. look ahead 在自动机类型题目中是非常必要的, 要根据两个字符来判断控制流的走向

 

代码

class Solution {public:    bool isMatch(const char *s, const char *p) {        int len1 = strlen(s);        int len2 = strlen(p);        if(len1 == 0 && len2 == 0) return true;        //if(len1 == 0 && len2 != 0) return false;        if(len1 != 0 && len2 == 0) return false;        bool star = false;        if(len2 >= 2 && *(p+1) == '*') star = true;        if(!star)  {	// no star        	if(len1 == 0)        		return false;        	        	if(p[0] == '.' || p[0] == s[0]) {        		return isMatch(s+1, p+1);        	}        	return false;        }        // have star        if(p[0] == '.')  {        	        	for(int k = 0; k <= len1; k ++)  {        		if(isMatch(s+k, p+2))        			return true;        	}        }  else  {        	        	if(isMatch(s, p+2))        		return true;        	for(int k = 1; k <= len1 && s[k-1] == p[0]; k ++)  {        		if(isMatch(s+k, p+2))        			return true;        	}        }        return false;    }};

  

 

转载于:https://www.cnblogs.com/zhouzhuo/p/3682648.html

你可能感兴趣的文章
mysql show profiles 使用分析sql 性能
查看>>
POJ 2488 A Knight's Journey (DFS)
查看>>
jvm内存
查看>>
silverlight在XAML资源中实例化CLR对象
查看>>
Java中的字符串不变性
查看>>
Sql 的 RAISERROR用法
查看>>
Css下拉菜单设置
查看>>
Robot Framework学习笔记(八)------ride标签使用
查看>>
BIOS与EC之间关系
查看>>
一款简洁而强大的前端框架—JQuery
查看>>
js中的解绑事件
查看>>
ubuntu16.04下编译安装vim8.1
查看>>
DSSM 深度学习解决 NLP 问题:语义相似度计算
查看>>
真实世界的脉络].(英)戴维.多伊奇.pdf
查看>>
POJ 3710 Christmas Game
查看>>
秒懂神经网络---真·模拟退火算法
查看>>
js进阶 10-9 -of-type型子元素伪类选择器
查看>>
html5--6-14 CSS3中的颜色表示方式
查看>>
thinkphp5空控制器和空操作
查看>>
Mac下的UI自动化测试 (二)
查看>>