当前位置: 首页 > news >正文

【算法题】44. 通配符匹配

题目

给你一个输入字符串 (s) 和一个字符模式 (p) ,请你实现一个支持 '?' 和 '*' 匹配规则的通配符匹配:
'?' 可以匹配任何单个字符。
'*' 可以匹配任意字符序列(包括空字符序列)。
判定匹配成功的充要条件是:字符模式必须能够 完全匹配 输入字符串(而不是部分匹配)。

 
示例 1:

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

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

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

提示:

0 <= s.length, p.length <= 2000
s 仅由小写英文字母组成
p 仅由小写英文字母、'?' 或 '*' 组成

题解

class Solution {public boolean isMatch(String s, String p) {int m = s.length();int n = p.length();boolean[][] dp = new boolean[m + 1][n + 1];dp[0][0] = true;for (int i = 1; i <= n; ++i) {if (p.charAt(i - 1) == '*') {dp[0][i] = true;} else {break;}}for (int i = 1; i <= m; ++i) {for (int j = 1; j <= n; ++j) {if (p.charAt(j - 1) == '*') {dp[i][j] = dp[i][j - 1] || dp[i - 1][j];} else if (p.charAt(j - 1) == '?' || s.charAt(i - 1) == p.charAt(j - 1)) {dp[i][j] = dp[i - 1][j - 1];}}}return dp[m][n];}
}

来自力扣官方题解

http://www.lryc.cn/news/277664.html

相关文章:

  • vscode配置与注意事项
  • 设计模式篇章(3)——七种结构型模式
  • Window端口占用处理
  • 算法实战(二)
  • 网工内推 | 上市公司网工,NP认证优先,最高15薪+项目奖金
  • 【LLM 论文阅读】NEFTU N E: LLM微调的免费午餐
  • JS新手入门笔记整理:对象
  • Python GIL 一文全知道!
  • 数据库级别的MD5加密(扩展)
  • Docker安装Jenkins,配置Maven和Java
  • 游戏分组(100用例)C卷 (JavaPythonC语言C++Node.js)
  • python函数装饰器保存信息
  • AI真正的Killer App 仍然缺席
  • Docker 镜像以及镜像分层
  • aigc 启动器 sd-webui-aki-v4 decode_base64_to_file
  • 【C++进阶05】AVL树的介绍及模拟实现
  • MySQL视图 索引 面试题
  • JAVA实现文件上传至阿里云
  • 设计模式之外观模式【结构型模式】
  • Qt QCheckBox复选按钮控件
  • 加速科技ST2500 数模混合信号测试设备累计装机量突破500台!
  • ASP.NETCore WebAPI 入门 杨中科
  • 问题 C: 活动选择
  • SpringBoot学习(五)-Spring Security配置与应用
  • Java解决删除子串后的字符串最小长度
  • 日志系统一(elasticsearch+filebeat+logstash+kibana)
  • 游戏版 ChatGPT,要用 AI 角色完善生成工具实现 NPC 自由
  • 加工零件的题解
  • 走进shell
  • 【Python】使用tkinter设计开发Windows桌面程序记事本(2)