前言
正文
题目
未看题解时,解题的思路
这题之前在牛客网做过,但还是做的跌跌撞撞。
自己实现的代码
code
class Solution {
public:
bool isMatch(string s, string p) {
if(p.empty())//如果p字符串为空的话,那么就返回s字符串是否为空
return s.empty();
bool first_match = (!s.empty())&&(s[0]==p[0]||p[0]=='.');//第一个字符的比较
if((p.size()>=2)&&p[1]=='*')//若p的字符个数大于2,且p[1]=='*',那就要分两种情况,一种是*前面那个字符是无用字符,根本没有用到,一种是有用到的
{
return isMatch(s,p.substr(2))||(first_match&&isMatch(s.substr(1),p));
//首先,把*及其前面的那个字符去掉,然后比较试试看,接下来,一个字符一个字符的去掉s的字符,跟p比较,直到出现第一种情况。可以把p的前两个字符去掉的这种情况
}
else
{
return first_match&&isMatch(s.substr(1),p.substr(1));
//这种就是循规蹈矩的进行比较,一个字符一个字符的进行比较
}
}
};
看了题解后解题的思路
- 方法一:动态规划