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

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

Implement regular expression matching with support for '.' and '*'.

'.' 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") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "a*") → trueisMatch("aa", ".*") → trueisMatch("ab", ".*") → trueisMatch("aab", "c*a*b") → true
1 /** 2  * @param {string} s 3  * @param {string} p 4  * @return {boolean} 5  */ 6 var isMatch = function(s, p) { 7      8      9     //首先最简单的是 s,p中都不出现正则元字符 这样如果s==p 就ok10     //问题是出现了元字符 比如+ * 这种就比较麻烦,我想到的是直接用分治11     //举例来说  s->"abcd"  p->"ae*bcd"  我们在比较 b和e时候,很快又发现e后面有个*,这个时候我们可以分类去比较12     //一种是去比较  bcd bcd   一种是去比较 bcd 和 e*bcd 13     14     //最后我们还要考虑 . 这个字符,因为他通配15     16      17     var slen = s.length;18     var plen = p.length;19     20     if(plen == 0){21 22         return  slen == 0;23     }24 25     if ('*' == p[1]){26            27         //一种就是直接把*当成0次,28         //另外一种就是直接当成一次。29            return (isMatch(s, p.substr(2)) || slen!== 0 && (s[0] == p[0] || '.' == p[0]) && isMatch(s.substr(1), p));30     }else{31            return  slen!== 0 && (s[0] == p[0] || '.' == p[0]) && isMatch(s.substr(1), p.substr(1));32     }33            34     35 };

 

转载于:https://www.cnblogs.com/huenchao/p/7641877.html

你可能感兴趣的文章
使用excel 展现数据库内容
查看>>
C#方法拓展
查看>>
MySql.Data.dll的版本
查看>>
Linux系统磁盘管理
查看>>
hdu 2191 (多重背包+二进制优化)
查看>>
home.php
查看>>
neo4j---删除关系和节点
查看>>
redis分布式锁redisson
查看>>
什么样的企业可以称之为初创企业?
查看>>
Python爬虫之BeautifulSoup
查看>>
《HTML 5与CSS 3权威指南(第3版·下册)》——第20章 使用选择器在页面中插入内容...
查看>>
如何判断自己适不适合做程序员?这几个特点了解一下
查看>>
newinstance()和new有什么区别
查看>>
android下载封装类
查看>>
[node] 用 node-webkit 开发桌面应用
查看>>
Nginx访问控制和虚拟主机
查看>>
report widget not working for external users
查看>>
windows phone 摄像头得到图片是旋转90°
查看>>
Linux--sed使用
查看>>
没有显示器的情况下安装和使用树莓派
查看>>