实现支持“.”和“*”的正则表达式匹配。
“.” 匹配支持单个字符
“*” 匹配零个或多个前面的元素
匹配应该覆盖到整个输入的字符串(而不是局部的)。
该函数的原型应该是:
bool isMatch(const char s, const char p)
示例:
isMatch("aa","a") → false
isMatch("aa","aa") → true
isMatch("aaa","aa") → false
isMatch("aa", "a") → true
isMatch("aa", ".") → true
isMatch("ab", ".") → true
isMatch("aab", "ca*b") → true
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") → false
isMatch("aa","aa") → true
isMatch("aaa","aa") → false
isMatch("aa", "a") → true
isMatch("aa", ".") → true
isMatch("ab", ".") → true
isMatch("aab", "ca*b") → true
public class Solution { public bool IsMatch(string s, string p) { if (p.Length == 0) return s.Length == 0; if (p.Length == 1) return (s.Length == 1) && (p[0] == s[0] || p[0] == '.'); if (p[1] != '*') { if (s.Length == 0) return false; else return (s[0] == p[0] || p[0] == '.') && IsMatch(s.Substring(1), p.Substring(1)); } else { while (s.Length > 0 && (p[0] == s[0] || p[0] == '.')) { if (IsMatch(s, p.Substring(2))) return true; s = s.Substring(1); } return IsMatch(s, p.Substring(2)); } } }