1. 通配符匹配
给定一个字符串 (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区别
首先星号可以匹配任何字符串,这个与10不同,那个星号前面必然有字母,就会造成在初始化时,数组越界

这种依然是可以匹配的,所以这里的星号与10题作用是不同的,这里是不需要有字母,星号可以表示任何字母,或者0个字母,也就是自己消失,所以就不需要参照星号之前字符的类型,转变为画表格,参照左前,左上,正上三个状态即可
表格参照教程
注意这里的i,j是相反的

class Solution {public boolean isMatch(String s, String p) {int m = s.length(), n = p.length();boolean[][] dp = new boolean[m + 1][n + 1];dp[0][0] = true;//初始化第一列,即s为空字符串,初始化方式也不再相同for(int i = 1; i<= n; i++){dp[0][i] = dp[0][i - 1] && p.charAt(i - 1) == '*';}for(int i = 1; i <= m; i++){for(int j = 1; j <= n; j++){if(s.charAt(i - 1) == p.charAt(j - 1) || p.charAt(j - 1) == '?'){dp[i][j] = dp[i - 1][j - 1];}if(p.charAt(j - 1) == '*'){dp[i][j] = dp[i][j- 1] || dp[i - 1][j] || dp[i - 1][j - 1];//i控制行数,j控制列数//dp[i][j - 1]就是左前方,*对应多个//dp[i - 1][j]对应正上方,*对应为0个//dp[i - 1][j - 1]对应对角线斜上方,就是*当做一个}}}return dp[m][n];}
}

L44. 通配符匹配相关推荐

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

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

  2. leetcode:44. 通配符匹配

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

  3. LeetCode 43字符串相乘44通配符匹配

    原创公众号:bigsai,回复进群加入力扣打卡群. 字符串相乘 题目描述: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形 ...

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

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

  5. 通配符 不是jpg 结尾文件_Struts(十九)- 使用使用通配符匹配

    学习到目前为止,add,show, list分别需要进行配置 通过通配符匹配可以把这3个配置整合在一个配置中实现 步骤1:先运行,看到效果,再学习步骤2:模仿和排错步骤3:struts.xml步骤4: ...

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

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

  7. 44. Wildcard Matching 通配符匹配

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

  8. 洛谷P4173:残缺的字符串(FFT、通配符匹配)

    解析 通配符匹配的经典题. 设单词串为 AAA,文章串为 BBB. 把 AAA 翻转一下,判断问题就能转化为一个卷积的形式: F(p)=&i=0m−1match(Ai+1,Bp−i)F(p)= ...

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

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

  10. 《Python Cookbook 3rd》笔记(2.3):用Shell通配符匹配字符串

    用 Shell 通配符匹配字符串 问题 你想使用 Unix Shell 中常用的通配符 (比如 *.py , Dat[0-9]*.csv 等) 去匹配文本字符串 解法 fnmatch 模块提供了两个函 ...

最新文章

  1. 异常记录: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError
  2. 图像“颜色选择”怎么用?
  3. 汇编-简单的条件转移指令应用-附例子:判断坐标所在象限
  4. 字符串系列函数(不断跟新)
  5. 研究笔记:iOS中使用WebViewProxy拦截URL请求
  6. 构建测试的体系化思维(进阶篇)
  7. 阿里云ubuntu mysql_Ubuntu下安装MySQL(阿里云服务器)
  8. java list排序工具类_java 之 Collections集合工具类排序
  9. 怎样从外网访问自己的HTTP服务器
  10. java 之 观察者模式(大话设计模式)
  11. 素数问题练习_HDOJ1262
  12. TP-LINK WR703N 变砖救活
  13. 干货 | 华为内部几近满分的项目管理PPT
  14. js监听移动端横屏和竖屏状态
  15. MATLAB火灾自动报警与消防控制系统
  16. 英雄无敌6服务器在哪个文件夹,英雄无敌6无法进入游戏解决方法_单机攻略_快吧单机游戏...
  17. visual C++2015提示0x80240017
  18. erp系统的开发工具
  19. 高考作弊,5G背锅,还是屏蔽器背锅
  20. js动态渲染的页面发现鼠标悬浮hover事件失效

热门文章

  1. Gmail:如何跟踪邮件阅读状态
  2. MAC怎样显示隐藏文件
  3. 2021秋季《数据结构》_EOJ 1086.哥尼斯堡的七桥问题
  4. neo4j 初始密码
  5. 电子邮件注册帐号大全_电子邮件
  6. 手把手教你申请CSDN博客专家(2021新鲜出炉)
  7. unll是什么意思_javascript中null是什么意思?
  8. 网站加速的几种常用方法
  9. weblogic启动慢原因
  10. ThingWorx公开课圆满结束