leetcode44. 通配符匹配 又是一道没有解释的字符串dp困难题
给定一个字符串 (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困难题相关推荐
- leetcode10. 正则表达式匹配 一道没有解释的字符串dp困难题
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 ...
- 刻意练习:LeetCode实战 -- Task30.通配符匹配
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...
- leetcode:44. 通配符匹配
给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配. '?' 可以匹配任何单个字符. '*' 可以匹配任意字符串(包括空字符串). 两个字符串完全匹配才算 ...
- 困难动态规划系列、经典的正则表达式和通配符匹配问题(难题)
2020/10/24. 周六.今天又是奋斗的一天. 正则表达式(Regular Expression, RE)就是一组定义某种搜索模式(pattern)的字符. 文章目录 Leetcode 10 正则 ...
- 【数据结构与算法】之深入解析“通配符匹配”的求解思路与算法示例
一.题目要求 给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 '?' 和 '*' 的通配符匹配. '?' 可以匹配任何单个字符. '*' 可以匹配任意字符串(包括空字符串). 两个字符串完 ...
- 44. Wildcard Matching 通配符匹配
Title 给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 '?' 和 '*' 的通配符匹配. '?' 可以匹配任何单个字符. '*' 可以匹配任意字符串(包括空字符串). 两个字符串完全 ...
- LeetCode 44. 通配符匹配(DP)
1. 题目 给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配. '?' 可以匹配任何单个字符. '*' 可以匹配任意字符串(包括空字符串). 两个字符串 ...
- python 通配符域名_LeetCode-python 44.通配符匹配
题目链接 难度:困难 类型: 动态规划 给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配. '?' 可以匹配任何单个字符. '*' 可以匹配 ...
- LeetCode 44.通配符匹配(动态规划)
题目描述 给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 '?' 和 '' 的通配符匹配. '?' 可以匹配任何单个字符. '' 可以匹配任意字符串(包括空字符串). 两个字符串完全匹配才 ...
最新文章
- ML基础 : 训练集,验证集,测试集关系及划分 Relation and Devision among training set, validation set and testing set...
- 手機電視挑戰傳統視聽習慣
- Amazon Elasticsearch Service 入门实践
- 第3章 用户(账户)管理
- Javascript iframe交互并兼容各种浏览器的解决方案
- java 动态性之反射机制 详解 案例,java架构师技术图谱
- WinCap数据包显示
- 服务器端返回的状态码是什么意思
- 通过iis启动服务,会产生C:/inetpub/logs/logsFile产生大量的日志,定期清理
- 大型、超大型数据中心园区设计如何审查与优化
- linux下usb转串口驱动分析
- 日常学习中遇到的好的资源(Graph Clustering and GNN)(持续更新)
- 【调音小栈】普瑞声纳Revelator io24直播关联机架驱动跳线设置教程
- java实现第七届蓝桥杯凑平方数
- Python数据可视化 Pyecharts 制作 Tab 选项卡多图控制
- java web 网上商城_JavaWeb项目--网上商城 (6-2)
- Spring Framework 5.3.0正式发布,在云原生路上继续发力
- 数据库系统SSD7 实验3《存储过程》
- 学习vue前的准备(繁琐的)
- 《安富莱嵌入式周报》第262期:2022.04.18--2022.04.24
热门文章
- 计算机如何用vb文本加密,信息加密与隐藏工具的设计与实现VB231
- python 读取excel太慢_Python 读取excel并转换为字典
- VxWorks嵌入式操作系统的TrueFFS文件系统驱动开发
- WinCE BSP的BIB文件介绍
- c程序设计语言 练习1-6,C程序设计语言:第一章练习
- 【转】dcmtk程序包综述(2)!!!!!
- 【转】Microsoft Graph 桌面应用程序
- 【转】Office365完整离线安装包下载及自定义安装教程
- linux mysql关闭启动不了了,linux启动或关闭mysql失败的解决办法
- idea全局搜索搜不全的BUG