Leetcode 44 通配符匹配
Posted 不搞事情和咸鱼有什么区别
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 44 通配符匹配相关的知识,希望对你有一定的参考价值。
题目描述:
题解:仿照LCS构建一个dp[i][j],表示s[i-1]与p[j-1]的匹配情况,dp[i][j] == 1 的时候表示完全匹配。状态转移如下:
当p[j-1]==‘*’的时候,要么\'*\'为空,要么‘*’匹配对应j-1位置的字符,也就是说这个时候的dp[i][j]由dp[i-1][j]以及dp[i][j-1]的状态决定;
当p[j-1]!=\'*\'的时候,dp[i][j]的状态由dp[i-1][j-1]以及s[i-1],p[j-1]值的i情况来确定。
AC代码如下:
bool isMatch(string s, string p) { int Lens = s.length(); int Lenp = p.length(); int dp[Lens+1][Lenp+1]; for(int i=0;i<=Lens;i++) for(int j=0;j<=Lenp;j++) dp[i][j] = 0; dp[0][0] = 1; for(int j=1;j<=Lenp;j++) dp[0][j] = dp[0][j-1] && p[j-1]==\'*\'; for(int i=1;i<=Lens;i++) { for(int j=1;j<=Lenp;j++) { if(p[j-1] == \'*\') { dp[i][j] = max(dp[i][j-1],dp[i-1][j]); } else { dp[i][j] = dp[i-1][j-1] && (s[i-1] == p[j-1] | p[j-1] == \'?\' ); } } } if(dp[Lens][Lenp] == 1) return true; return false; }
以上是关于Leetcode 44 通配符匹配的主要内容,如果未能解决你的问题,请参考以下文章