<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Draft on ClarkFlyBee&#39;s Blog</title>
    <link>https://clarkflybee.github.io/categories/draft/</link>
    <description>Recent content in Draft on ClarkFlyBee&#39;s Blog</description>
    <image>
      <title>ClarkFlyBee&#39;s Blog</title>
      <url>https://clarkflybee.github.io/images/show.png</url>
      <link>https://clarkflybee.github.io/images/show.png</link>
    </image>
    <generator>Hugo -- 0.154.5</generator>
    <language>zh-cn</language>
    <copyright>2026 ClarkFlyBee · GitHub</copyright>
    <lastBuildDate>Fri, 12 Jun 2026 14:45:36 +0800</lastBuildDate>
    <atom:link href="https://clarkflybee.github.io/categories/draft/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>力扣刷题笔记 —— 10.正则表达式匹配</title>
      <link>https://clarkflybee.github.io/posts/2026-06-12-leetcode-10-cheatsheet/</link>
      <pubDate>Fri, 12 Jun 2026 14:45:36 +0800</pubDate>
      <guid>https://clarkflybee.github.io/posts/2026-06-12-leetcode-10-cheatsheet/</guid>
      <description>&lt;h2 id=&#34;题目&#34;&gt;题目&lt;/h2&gt;
&lt;p&gt;题目描述详见：&lt;a href=&#34;https://leetcode.cn/problems/regular-expression-matching/&#34;&gt;10. 正则表达式匹配 - 力扣（LeetCode）&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;题解&#34;&gt;题解&lt;/h2&gt;
















&lt;div class=&#34;callout callout-note&#34;&gt;
  &lt;div class=&#34;callout-header&#34;&gt;
    &lt;span class=&#34;callout-icon&#34;&gt;📝&lt;/span&gt;
    &lt;span class=&#34;callout-title&#34;&gt;写在前面&lt;/span&gt;
  &lt;/div&gt;
  &lt;div class=&#34;callout-content&#34;&gt;
    &lt;p&gt;之前的题目，或许我不知道快速的、巧妙的解法，但我可以用笨方法，或者说“朴素”的方法是手搓出来。&lt;/p&gt;
&lt;p&gt;但这道题我甚至是思路全无，无从下笔，所以特地来记录一下题解思路。&lt;/p&gt;

  &lt;/div&gt;
&lt;/div&gt;
















&lt;div class=&#34;callout callout-tip&#34;&gt;
  &lt;div class=&#34;callout-header&#34;&gt;
    &lt;span class=&#34;callout-icon&#34;&gt;💡&lt;/span&gt;
    &lt;span class=&#34;callout-title&#34;&gt;参考&lt;/span&gt;
  &lt;/div&gt;
  &lt;div class=&#34;callout-content&#34;&gt;
    本文的题解来自&lt;a href=&#34;https://leetcode.cn/problems/regular-expression-matching/solutions/295977/zheng-ze-biao-da-shi-pi-pei-by-leetcode-solution/&#34;&gt;官方题解&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;正如本题题目 &lt;strong&gt;”正则表达式匹配”&lt;/strong&gt; 所说，这是一个&lt;strong&gt;逐步匹配&lt;/strong&gt;的过程。&lt;/p&gt;
&lt;p&gt;我们记&lt;strong&gt;字符串&lt;/strong&gt; $s$ ，&lt;strong&gt;字符规律&lt;/strong&gt; $p$ 。对于字符规律 $p$ ，它包含以下几类字符：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;普通字符&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;&#39;.&#39;&lt;/code&gt;：匹配任意单个字符&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;&#39;*&#39;&lt;/code&gt;：匹配零个或多个前面的那一个元素&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;事实上，我们可以进一步分为两类：（1）字符（2）星号。&lt;/p&gt;
&lt;p&gt;我们每次从字符串 $p$ 取出一个 &lt;strong&gt;字符&lt;/strong&gt; 或 &lt;strong&gt;字符+星号&lt;/strong&gt; 的组合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;对于 $p$ 中的一个字符，它只能在 $s$ 中匹配一个字符，匹配方法具有唯一性；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于 p 中字符+星号的组合，它可以在 s 中匹配任意自然数个字符，&lt;strong&gt;不具有唯一性&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此我们可以考虑使用&lt;strong&gt;动态规划&lt;/strong&gt;，对匹配的方案进行枚举。&lt;/p&gt;
















&lt;div class=&#34;callout callout-tip&#34;&gt;
  &lt;div class=&#34;callout-header&#34;&gt;
    &lt;span class=&#34;callout-icon&#34;&gt;💡&lt;/span&gt;
    &lt;span class=&#34;callout-title&#34;&gt;说明&lt;/span&gt;
  &lt;/div&gt;
  &lt;div class=&#34;callout-content&#34;&gt;
    &lt;h5 id=&#34;唯一性&#34;&gt;唯一性？&lt;/h5&gt;
&lt;p&gt;关于这里的“唯一性”，指的是&lt;strong&gt;匹配方式是否确定&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对于字符+星号的组合，由于星号可以匹配0个或多个元素，因此单纯看这个组合是无法确定匹配方式的。&lt;/p&gt;
&lt;p&gt;下面是一个例子，单个字符的匹配是唯一确定的，字符+组合则相反：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模式&lt;/th&gt;
          &lt;th&gt;面对字符 &lt;code&gt;a&lt;/code&gt;&lt;/th&gt;
          &lt;th&gt;匹配方式&lt;/th&gt;
          &lt;th&gt;是否唯一&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;a&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;a&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;只能匹配这 1 个 &lt;code&gt;a&lt;/code&gt;，然后双双后移&lt;/td&gt;
          &lt;td&gt;✅ 唯一&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;a&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;只能匹配这 1 个 &lt;code&gt;a&lt;/code&gt;，然后双双后移&lt;/td&gt;
          &lt;td&gt;✅ 唯一&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;a*&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;aaa&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;可以匹配 0 个、1 个、2 个、3 个 &lt;code&gt;a&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;❌ 不唯一&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id=&#34;动态规划&#34;&gt;动态规划？&lt;/h5&gt;
&lt;p&gt;可以这样理解，因为 &lt;code&gt;*&lt;/code&gt; 带来了&lt;strong&gt;分支&lt;/strong&gt;，我们必须尝试所有的分支，才能知道是否存在一个完美的匹配方案。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
