1、题目描述
2、我的代码
class Solution{
public:
bool isMatch(string s, string p) {
int len_src = s.length();
int len_gui = p.length();
bool first_match = false;
if(len_gui == 0)
return s.empty();
first_match = (!s.empty() && (p[0] == s[0] || p[0] == '.'));
if(len_gui >= 2 && p[1] == '*'){
return (isMatch(s,p.substr(2)) || (first_match && isMatch(s.substr(1),p)));
}else{
return first_match && isMatch(s.substr(1),p.substr(1));
}
}
};
3、网上好的解法
class Solution {
public boolean isMatch(String text, String pattern) {
if (pattern.isEmpty()) return text.isEmpty();
boolean first_match = (!text.isEmpty() &&
(pattern.charAt(0) == text.charAt(0) || pattern.charAt(0) == '.'));
if (pattern.length() >= 2 && pattern.charAt(1) == '*'){
return (isMatch(text, pattern.substring(2)) ||
(first_match && isMatch(text.substring(1), pattern)));
} else {
return first_match && isMatch(text.substring(1), pattern.substring(1));
}
}
}
4、自己可以改进的地方
5、优化代码至简无可简
6、我的思考