[LintCode] 正则表达式匹配

简介: 1 class Solution { 2 public: 3 /** 4 * @param s: A string 5 * @param p: A string includes ".
 1 class Solution {
 2 public:
 3     /**
 4      * @param s: A string 
 5      * @param p: A string includes "." and "*"
 6      * @return: A boolean
 7      */
 8     bool isMatch(const char *s, const char *p) {
 9         // write your code here
10         int m = strlen(s), n = strlen(p);
11         vector<vector<bool> > dp(m + 1, vector<bool> (n + 1, false));
12         dp[0][0] = true;
13         for (int j = 1; j <= n; j++)
14             dp[0][j] = (j > 1 && p[j - 1] == '*' && dp[0][j - 2]);
15         for (int j = 1; j <= n; j++) {
16             for (int i = 1; i <= m; i++) {
17                 if (j > 1 && p[j - 1] == '*') 
18                     dp[i][j] = dp[i][j - 2] || ((s[i - 1] == p[j - 2] || p[j - 2] == '.') && dp[i - 1][j]);
19                 else dp[i][j] = dp[i - 1][j - 1] && (s[i - 1] == p[j - 1] || p[j - 1] == '.');
20             }
21         }
22         return dp[m][n];
23     }
24 };

 

目录
相关文章
|
7月前
正则表达式2
正则表达式
|
8月前
正则表达式的使用
正则表达式的使用
53 1
|
数据安全/隐私保护
正则表达式_2
学习自编程胶囊课程。
107 1
正则表达式_2
什么是正则表达式?
什么是正则表达式?
102 0
最全的常用正则表达式大全
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。
1378 0
|
机器学习/深度学习 Windows JavaScript
详细的正则表达式
只能输入数字:"^[0-9]*$"。只能输入n位的数字:"^\d{n}$"。只能输入至少n位的数字:"^\d{n,}$"。只能输入m~n位的数字:。"^\d{m,n}$"只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。
889 0
第177天:常用正则表达式(最全)
常用正则表达式 1 2 /* 常用正则表达式大全!(例如:匹配中文、匹配html) 3 4 匹配中文字符的正则表达式: [u4e00-u9fa5] 5 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 6 匹配双字节字符(包括汉字在内):[^x0...
1130 0
|
Shell Linux Python
正则表达式与运用
正则表达式用的地方是很多的。比如字符串处理过程中。最近遇到记录一下。 1. 比如在shell中 1 #!/bin/bash 2 3 str="date:2017-11-28 os:centos blackbord:blog" 4 5 echo $str | grep centos --colo...
1295 0