leetcode每日一题 10
public static boolean isMatch(String s, String p) {
if(s==null||p==null) return false;
boolean dp[][]=new boolean [s.length()+1][p.length()+1];
dp[0][0]=true;
for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;p.length();&nbsp;i++)&nbsp;{//预处理
if&nbsp;(p.charAt(i)=='*'&&dp[0][i-1])&nbsp;{
dp[0][i+1]=true;
}//s&nbsp;=&nbsp;"aab"&nbsp;&nbsp;p&nbsp;=&nbsp;"c*a*b"&nbsp;&nbsp;输出:&nbsp;true&nbsp;i=1&nbsp;dp[0][i+1]=true&nbsp;即s=""&nbsp;p="c*"=""=s
}
for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;s.length();&nbsp;i++)&nbsp;{
for&nbsp;(int&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;<&nbsp;p.length();&nbsp;j++)&nbsp;{
if&nbsp;(p.charAt(j)==s.charAt(i))&nbsp;{//s="ab"&nbsp;p="ab"
dp[i+1][j+1]=dp[i][j];
}
if&nbsp;(p.charAt(j)=='.')&nbsp;{
dp[i+1][j+1]=dp[i][j];&nbsp;&nbsp;//s="ab"&nbsp;p=".b"
}
if&nbsp;(p.charAt(j)=='*')&nbsp;{
if&nbsp;(p.charAt(j-1)!=s.charAt(i)&&p.charAt(j-1)!='.')&nbsp;{
dp[i+1][j+1]=dp[i+1][j-1];
}else&nbsp;{
dp[i+1][j+1]=dp[i+1][j]||dp[i][j+1]||dp[i+1][j-1];
}
}
}
}
return&nbsp;dp[s.length()][p.length()];
}
全部评论

相关推荐

真烦好烦真烦:豆包润色了自己没看看吗,再说了,都说豆包是愚蠢且勤快的大学生,ds才是聪明的研究生,怎么敢让豆包写论文的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务