Wildcard Matching解题心得

Wildcard Matching解题心得

来源:https://leetcode.com/problems/wildcard-matching/description/

题目描述

  • 输入两个字符串 s p ,字符串 s 只包含字母,字符串p还包含特殊字符'?','*'
    • 其中'?'表示匹配任意一个字母
    • '*'表示匹配任意字符串,包括空字符串
  • 判断 s p ,是否匹配成功

解题

  • 这到题类似于之前的通配符'*','.'但是略微改变
  • 主要做这道题的目的是为了能够熟悉DP的设计思路
  • 设计状态转移方程
    • B(i,j) :代表 s(1:i) p(1:j) 是否匹配,返回布尔值
    • 状态转移方程:
      B(i,j)=s[i1]==p[j1] && B(i1,j1)B(i1,j) || B(i,j1)B(i1,j1)if  p[j1]letterif  p[j1]==if  p[j1]==?
  • 算法实现:
    • 容易出现的问题:边界值问题
    • 对于边界值的处理反复考虑推导可得:
    vector<vector<bool>> boolMap(n+1, vector<bool>(m+1, false));
    boolMap[0][0]=true;
    for (int i=1; i<=m; i++){
        if (p[i-1]=='*'){
            boolMap[0][i]=boolMap[0][i-1];
        }
    }


  • 具体代码可以查看原址

https://github.com/zhanzongyuan/leetcode/blob/master/044_Wildcard%20Matching.cpp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值