https://segmentfault.com/a/1190000003786247
答案中有一个很奇怪的地方,为什么遇到*之后不能直接默认完成匹配?
问题:
Implement wildcard pattern matching with support for '?' and ''.
'?' Matches any single character. '' Matches any sequence of characters (including the empty sequence).
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", "") → true
isMatch("aa", "a") → true
isMatch("ab", "?") → true
isMatch("aab", "ca*b") → false
部分解答:
1.s的字符和p的字符相等
2.p中的字符是?,这时无论s的字符是什么都可以匹配一个
3.p中遇到了一个,这时无论s的字符是什么都没关系
4.之前的都不符合,但是p在之前的位置有一个,我们可以从上一个后面开始匹配
5.s已经匹配完,但是p后面还有很多连续的`
疑问:(?)
答案中的4.5没有必要,可以直接遇到3之后,确认匹配成功。因为答案只需要true/false,除非*的匹配是有条件的,不匹配换行,字符串中可能有多行等情况
网友评论