带你读《图解算法小抄》二十四、字符串(4)

简介: 带你读《图解算法小抄》二十四、字符串(4)

带你读《图解算法小抄》二十四、字符串(3)https://developer.aliyun.com/article/1347817?groupCode=tech_library


4.正则表达式匹配


给定一个输入字符串 s 和一个模式 p,实现支持 . 和 * 的正则表达式匹配。

  • . 匹配任意单个字符。
  • * 匹配零个或多个前面的元素。

匹配应覆盖整个输入字符串(不是部分匹配)。

 

注意

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

1示例

示例 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 可以重复 0 次,a 可以重复 1 次。因此,它与 aab 匹配。

2参考资料

  • YouTube
  • LeetCode

带你读《图解算法小抄》二十四、字符串(5)https://developer.aliyun.com/article/1347813

相关文章
|
19天前
|
算法
【优选算法】—— 字符串匹配算法
【优选算法】—— 字符串匹配算法
|
8天前
|
算法
KPM算法求字符串的最小周期证明
公式 `ans = n - LPS[n-1]` 描述了最小周期,其中 `n` 是子串长度,`LPS[n-1]` 是前缀函数值。证明分为特殊情况和一般情况:对于完整周期字符串,`LPS[n-1] = 3*T`,故 `ans = T`;对于非完整周期,通过分析不同长度的 `[末部分]` 和 `[前部分]`,展示 `ans` 始终等于周期 `T` 或由 `[e][b]` 构成的最小周期,从而证明公式正确。
|
19天前
|
算法 搜索推荐 程序员
第六十五练 字符串匹配 - Rabin-Karp算法
第六十五练 字符串匹配 - Rabin-Karp算法
19 1
|
19天前
|
算法 搜索推荐 程序员
第六十四练 字符串匹配 - Boyer-Moore算法
第六十四练 字符串匹配 - Boyer-Moore算法
22 0
|
19天前
|
算法 搜索推荐 程序员
第六十三练 字符串匹配 - KMP算法
第六十三练 字符串匹配 - KMP算法
18 2
|
19天前
|
算法 C语言 人工智能
|
19天前
|
算法
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
29 1
|
19天前
|
算法
【算法学习--字符串】(不含KMP算法)
【算法学习--字符串】(不含KMP算法)
|
19天前
|
算法 Java
[Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
[Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
30 0
|
19天前
|
算法 测试技术 C++
【字符串】【 LCP】【C++算法】2573找出对应 LCP 矩阵的字符串
【字符串】【 LCP】【C++算法】2573找出对应 LCP 矩阵的字符串