1 解题思想
嗯,最近遇到要写Hard的频率偏高,而最近的重心也不再Leetcode上,心累。。Hard写起来都好麻烦。
这道题好像之前也有几次,讲过类似的题目,也就是*能任意长度和字符匹配,?能匹配任意一个字符,现在需要验证给定的通配符是否能匹配输入的串
这道题应该有很多做法,我的这个感觉只是一个比较一般的解法,这道题的测试量比较大,所以单纯的暴力搜索是AC不掉的,而我的做法,就是使用动态规划。
不知道大家有了解LCS之类的算法吗?我就参照LCS做了动态规划。
矩阵[,]表示已匹配通配符的长度
初始位置[0,0]=true,也就是都为0的情况,匹配是成功的,其他位置都为false
假设字符i和通配符j进行比较,在位置[i,j],那么:
1、如果通配符为*,那么当前位置可以匹配到的条件是,只要他的左边 上边 或者左上 任意有一个可以到就可以了
2、如果是?或字符直接相等,那么条件就是左上[i-1,j-1]可以访问到
如果1,2都不是,那么第i个字符和第j个通配符是无法匹配成功的
完成了这个操作后,直接输出最后一个位置就可以了
2原题
Implement wildcard pattern matching with support for ‘?’ and ‘*’.
‘?’ Matches any single character.
‘*’ Matches any sequence of characters (including the empty sequence).
The matching