Leetcode #44. Wildcard Matching 通配符匹配 解题报告

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值