搞定面试高频题:动态规划解通配符匹配
2026/9/18 10:05:37 网站建设 项目流程

面试常考的 “通配符匹配” 题,用动态规划能高效解决!题目要求实现支持?(匹配单个字符)和*(匹配任意序列)的完全匹配,比如s="aa"p="a"要返回false,配p="*"则返回true

核心思路是用二维 DP 数组:dp[i][j]表示si个字符和pj个字符是否匹配。初始化时,dp[0][0] = true(空串匹配空串),再处理p开头的*(比如p="*a"时,dp[0][1]也为true)。

遍历过程中,分两种情况:

  1. p[j-1]*dp[i][j] = dp[i-1][j] || dp[i][j-1]*匹配多个 / 零个字符);
  2. p[j-1]?或与s[i-1]相等:dp[i][j] = dp[i-1][j-1]

这个方法时间复杂度是O(mn),能应对题目中字符串长度 2000 的限制,是面试中既清晰又高效的解法。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询