鱼C论坛

 找回密码
 立即注册
查看: 884|回复: 4

在刷LeetCode时候遇到1难题模拟正则匹配,大神们在的话帮忙看看

[复制链接]
发表于 2018-12-20 16:43:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
给定一个字符串 (s) 和一个字符模式 (p)。实现支持 '.' 和 '*' 的正则表达式匹配。
'.' 匹配任意单个字符。
'*' 匹配零个或多个前面的元素。

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

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

示例 2:
输入:
s = "aa"
p = "a*"
输出: true
解释: '*' 代表可匹配零个或多个前面的元素, 即可以匹配 'a' 。因此, 重复 'a' 一次, 字符串可变为 "aa"。

示例 3:
输入:
s = "ab"
p = ".*"
输出: true
解释: ".*" 表示可匹配零个或多个('*')任意字符('.')。

示例 4:
输入:
s = "aab"
p = "c*a*b"
输出: true
解释: 'c' 可以不被重复, 'a' 可以被重复一次。因此可以匹配字符串 "aab"。

示例 5:
输入:
s = "mississippi"
p = "mis*is*p*."
输出: false
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-12-20 16:46:38 | 显示全部楼层
在 ".* "模拟的时候没有啥思路,因为有些后面还有字符串或者“ * ”。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 16:54:42 | 显示全部楼层
liujian973 发表于 2018-12-20 16:46
在 ".* "模拟的时候没有啥思路,因为有些后面还有字符串或者“ * ”。

.*你就跳过去匹配其他部分,实际正则也是这么看的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-20 17:35:09 | 显示全部楼层
塔利班 发表于 2018-12-20 16:54
.*你就跳过去匹配其他部分,实际正则也是这么看的

老哥你看下
s="abcdddcdcd"
p="a.*d*dc*dc"
匹配 “ a.* ”该怎么确定匹配到哪里,在执行后续匹配呢

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 17:39:18 | 显示全部楼层
liujian973 发表于 2018-12-20 17:35
老哥你看下
s="abcdddcdcd"
p="a.*d*dc*dc"

没?都是贪婪,就是从p规则的最右开始匹配
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-12 12:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表