尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
YuanBao    LeetCode 10.Regular Expression Matching Java Implement
Here is a standard Dynamic Programming solution for LeetCode 10 (Regular Expression Matching) in Java.ApproachWe use a 2D boolean array“dp[i][j]” which represents whether the first“i” characters of the string“s” match the first“j” characters of the pattern“p”.Key Rules:Base Case:“dp[0][0] true” (empty matches empty).Pattern ends with“: The” can match zero of the preceding element (“dp[i][j-2]”) OR one/more if the preceding character matches (“dp[i-1][j]”).Normal match /“‘.’”: If characters match or pattern is“‘.’”, carry over the previous state (“dp[i-1][j-1]”).Java Implementationclass Solution {public boolean isMatch(String s, String p) {int m s.length();int n p.length();// dp[i][j] true if first i chars of s match first j chars of p boolean[][] dp new boolean[m 1][n 1]; // 1. Base case: empty string matches empty pattern dp[0][0] true; // 2. Handle patterns like a*, a*b*, a*b*c* matching an empty string for (int j 2; j n; j) { if (p.charAt(j - 1) *) { dp[0][j] dp[0][j - 2]; } } // 3. Fill the DP table for (int i 1; i m; i) { for (int j 1; j n; j) { char currentCharS s.charAt(i - 1); char currentCharP p.charAt(j - 1); // Case A: Current characters match or pattern has . if (currentCharP currentCharS || currentCharP .) { dp[i][j] dp[i - 1][j - 1]; } // Case B: Current pattern character is * else if (currentCharP *) { // * matches zero of the preceding element dp[i][j] dp[i][j - 2]; // * matches one or more of the preceding element // Check if the character before * matches current string char char charBeforeStar p.charAt(j - 2); if (charBeforeStar currentCharS || charBeforeStar .) { dp[i][j] dp[i][j] || dp[i - 1][j]; } } // Case C: Characters dont match else { dp[i][j] false; } } } return dp[m][n]; }}Complexity AnalysisTime Complexity: O(m \times n) , where m is the length of“s” and nis the length ofp. We fill a table of size (m1) \times (n1)$.Space Complexity: O(m \times n) for the DP table. (This can be optimized to O(n) using a 1D array if needed.)Test Cases“s”“p” Output““aa””““a””“false”““aa””““a*””“true”““ab””“”.*“”“true”““aab””““cab””“true”““mississippi””““misisp*.””“false”Would you like me to explain a specific part of the logic in more detail, or provide the space-optimized (1D DP) version?
RELATED

相关推荐

C++ 泛型世界的两块拼图:容器适配器与仿函数

C++ 泛型世界的两块拼图:容器适配器与仿函数

🏆浮世尘弦:个人主页 ⭐个人专栏:《C语言》、《数据结构与算法》、《C》 💎:非淡薄无以明志,非宁静无以致远 前言 前言:stack和queue是C中的容器适配器,不是自己实现存储的新容器&am…

📅 2026/10/6 2:49:45
【minio】#4 | MinIO API 文件操作

【minio】#4 | MinIO API 文件操作

一、文件上传(PutObject / FPutObject)MinIO 上传特性:文件超过 128MB 自动分片传输;单文件上限 5TB。 模拟文件夹原理:MinIO 本身没有文件夹概念,通过 ObjectKey 前缀模拟目录,如0114/ssh隧道命…

📅 2026/10/6 2:49:45
(论文速读)LogSAD:无需训练的结构异常与逻辑异常统一检测

(论文速读)LogSAD:无需训练的结构异常与逻辑异常统一检测

论文题目:Towards Training-free Anomaly Detection with Vision and Language Foundation Models(迈向基于视觉与语言基础模型的免训练异常检测) 会议:CVPR 2025 摘要:异常检测在工业质量检测等真实场景中具有重要价…

📅 2026/10/6 2:44:45
MORE NEWS

更多资讯

📰

随机蓝屏排查实战:从BlueScreenView到WinDbg的完整追踪记录

最近半个多月,我一直在跟一台 Windows 11 的随机蓝屏死磕。不是开机蓝、也不是跑分蓝,而是那种你永远不知道下一秒会不会来的“抽奖蓝”——可能半天没事,也可能刚打开浏览器就memory_management,重启后看上去一切正常&#xff0c…

📰

OSMDroid切换底图不更新?缓存与刷新机制解析

前两天有位朋友私信我,说他们的 Android 地图应用用了 OSMDroid,最近加了一个“切换底图”的功能:卫星图、街道图、离线地形图三个源切来切去。但实际跑起来就见了鬼——点击按钮切换后,地图界面经常纹丝不动,偶尔动一…

📰

HAMi在GPU云平台中的共享调度与异构纳管实践

这两年我一直在折腾GPU云平台。最大的感受是:GPU这玩意儿跟CPU内存不一样,它不是天生适合“上云”的。你把它按整卡租,贵得吓人,客户嫌浪费;你把它切小了分着用,隔离做不好,一个任务就能把整卡显…

📰

MPS校招笔试全解析:电源管理芯片与BUCK/BOOST考点攻略

1. 为什么选择MPS:先说清楚这是一家什么样的公司提到美国芯源系统,业内更习惯叫它MPS(Monolithic Power Systems),是做电源管理IC的头部玩家。如果你对芯片行业稍微有点了解,应该知道电源管理芯片不像CPU、…

📰

OpenClaw实战:从WSL2部署到Ollama本地模型自动化数据提取

说实话,我最初看到 OpenClaw 这个项目名的时候,第一反应是“又一个号称全能的 AI 框架”。但真正在 Windows 上把它从零跑起来、让它每天替我盯着十几个网页的数据变化之后,我才开始认真看待这个工具的价值:它解决的问题很实在——…

📰

HTTP/2与HTTP/3核心机制对比及部署实战指南

HTTP/2 与 HTTP/3 的竞赛,本质上是互联网传输效率的极限追逐。我在实际项目里对比过这两代协议在弱网、移动端和服务端高并发场景下的表现,结论是:HTTP/2 靠“多路复用”解决了 HTTP/1.1 的连接排队问题,HTTP/3 则直接掀翻传输层桌…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬