给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。

'?' 可以匹配任何单个字符。
'*' 可以匹配任意字符串(包括空字符串)。
两个字符串完全匹配才算匹配成功。

说明:

s 可能为空,且只包含从 a-z 的小写字母。
p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。
示例 1:

输入:
s = "aa"
p = "a"
输出: false
解释: "a" 无法匹配 "aa" 整个字符串。
示例 2:

输入:
s = "aa"
p = "*"
输出: true
解释: '*' 可以匹配任意字符串。
示例 3:

输入:
s = "cb"
p = "?a"
输出: false
解释: '?' 可以匹配 'c', 但第二个 'a' 无法匹配 'b'。
示例 4:

输入:
s = "adceb"
p = "*a*b"
输出: true
解释: 第一个 '*' 可以匹配空字符串, 第二个 '*' 可以匹配字符串 "dce".
示例 5:

输入:
s = "acdcb"
p = "a*c?b"
输入: false

思路:和leetcode10差不多,只不过这个*可以代表任意字符,并且和前一个字符没关系,dp式子好推很多。

class Solution {public boolean isMatch(String s,String p){if (s == null || p == null)return false;int sLen=s.length();int pLen=p.length();boolean[][] dp = new boolean[sLen + 1][pLen + 1];dp[0][0] = true;//dp[i][j] 表示 s 的前 i 个是否能被 p 的前 j 个匹配for (int j=1;j<=pLen;j++)dp[0][j]=p.charAt(j-1)=='*' && dp[0][j-1];for (int i = 0; i < sLen; i++) {for (int j = 0; j < pLen; j++) {//单个字符可以匹配if (p.charAt(j) == '?' || p.charAt(j) == s.charAt(i)) dp[i + 1][j + 1] = dp[i][j];//多个字符if (p.charAt(j) == '*') {dp[i+1][j+1]=dp[i+1][j] || //*代表0个dp[i][j+1]; //代表多个}}}return dp[sLen][pLen];}
}

leetcode44. 通配符匹配 又是一道没有解释的字符串dp困难题相关推荐

  1. leetcode10. 正则表达式匹配 一道没有解释的字符串dp困难题

    给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串  ...

  2. 刻意练习:LeetCode实战 -- Task30.通配符匹配

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

  3. leetcode:44. 通配符匹配

    给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配. '?' 可以匹配任何单个字符. '*' 可以匹配任意字符串(包括空字符串). 两个字符串完全匹配才算 ...

  4. 困难动态规划系列、经典的正则表达式和通配符匹配问题(难题)

    2020/10/24. 周六.今天又是奋斗的一天. 正则表达式(Regular Expression, RE)就是一组定义某种搜索模式(pattern)的字符. 文章目录 Leetcode 10 正则 ...

  5. 【数据结构与算法】之深入解析“通配符匹配”的求解思路与算法示例

    一.题目要求 给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 '?' 和 '*' 的通配符匹配. '?' 可以匹配任何单个字符. '*' 可以匹配任意字符串(包括空字符串). 两个字符串完 ...

  6. 44. Wildcard Matching 通配符匹配

    Title 给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 '?' 和 '*' 的通配符匹配. '?' 可以匹配任何单个字符. '*' 可以匹配任意字符串(包括空字符串). 两个字符串完全 ...

  7. LeetCode 44. 通配符匹配(DP)

    1. 题目 给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配. '?' 可以匹配任何单个字符. '*' 可以匹配任意字符串(包括空字符串). 两个字符串 ...

  8. python 通配符域名_LeetCode-python 44.通配符匹配

    题目链接 难度:困难       类型: 动态规划 给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配. '?' 可以匹配任何单个字符. '*' 可以匹配 ...

  9. LeetCode 44.通配符匹配(动态规划)

    题目描述 给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 '?' 和 '' 的通配符匹配. '?' 可以匹配任何单个字符. '' 可以匹配任意字符串(包括空字符串). 两个字符串完全匹配才 ...

最新文章

  1. ML基础 : 训练集,验证集,测试集关系及划分 Relation and Devision among training set, validation set and testing set...
  2. 手機電視挑戰傳統視聽習慣
  3. Amazon Elasticsearch Service 入门实践
  4. 第3章 用户(账户)管理
  5. Javascript iframe交互并兼容各种浏览器的解决方案
  6. java 动态性之反射机制 详解 案例,java架构师技术图谱
  7. WinCap数据包显示
  8. 服务器端返回的状态码是什么意思
  9. 通过iis启动服务,会产生C:/inetpub/logs/logsFile产生大量的日志,定期清理
  10. 大型、超大型数据中心园区设计如何审查与优化
  11. linux下usb转串口驱动分析
  12. 日常学习中遇到的好的资源(Graph Clustering and GNN)(持续更新)
  13. 【调音小栈】普瑞声纳Revelator io24直播关联机架驱动跳线设置教程
  14. java实现第七届蓝桥杯凑平方数
  15. Python数据可视化 Pyecharts 制作 Tab 选项卡多图控制
  16. java web 网上商城_JavaWeb项目--网上商城 (6-2)
  17. Spring Framework 5.3.0正式发布,在云原生路上继续发力
  18. 数据库系统SSD7 实验3《存储过程》
  19. 学习vue前的准备(繁琐的)
  20. 《安富莱嵌入式周报》第262期:2022.04.18--2022.04.24

热门文章

  1. 计算机如何用vb文本加密,信息加密与隐藏工具的设计与实现VB231
  2. python 读取excel太慢_Python 读取excel并转换为字典
  3. VxWorks嵌入式操作系统的TrueFFS文件系统驱动开发
  4. WinCE BSP的BIB文件介绍
  5. c程序设计语言 练习1-6,C程序设计语言:第一章练习
  6. 【转】dcmtk程序包综述(2)!!!!!
  7. 【转】Microsoft Graph 桌面应用程序
  8. 【转】Office365完整离线安装包下载及自定义安装教程
  9. linux mysql关闭启动不了了,linux启动或关闭mysql失败的解决办法
  10. idea全局搜索搜不全的BUG