From bfabb8072717f639efa5606c297fc10d892bb214 Mon Sep 17 00:00:00 2001 From: Wen <409053122@qq.com> Date: Thu, 24 Aug 2023 10:44:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20[44]=20=E9=80=9A=E9=85=8D=E7=AC=A6?= =?UTF-8?q?=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/leecode/.DS_Store | Bin 0 -> 6148 bytes src/leecode/javascript/44.通配符匹配.js | 42 ++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/leecode/.DS_Store create mode 100644 src/leecode/javascript/44.通配符匹配.js diff --git a/src/leecode/.DS_Store b/src/leecode/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..43e12fb4356daaf3ae18b17af3a0d7cf3c20cf98 GIT binary patch literal 6148 zcmeHKJ5EDE3>-s>2%40Xdj)Q=ioywU0T4)05DF-e)UV=P9F6fuDA7v_3K}$)?Ai5t z_UTRW{0zY6yQf=V24G5e#HWX``MLYZE-GV0I`4SLBeq!M4IiWG(+THZ;TaFu(+~Lj z<#zM(x>@Djr^(7n0VyB_q<|EV0>4(kdoOKzov0`Uq<|FoQNX_sjqcbBhs5}FFvJKz zoG=~6b<7gP<_Tgi91@wKSyG8fwHh%j>CCsP>xDyN(qT1xSUuTlLa}%{?{85K>xqg| zKnffyaGBeg_y0Tknfd>iq@5Iy0{=<@n=F=#IbW%I>*(dY*Eae+-D|$+Zd?b2A=)u9 j+A%lYj&GtU>zc25-V2AspfewIqJ9Qk7nv0JYX!am@I4j2 literal 0 HcmV?d00001 diff --git a/src/leecode/javascript/44.通配符匹配.js b/src/leecode/javascript/44.通配符匹配.js new file mode 100644 index 0000000..5b5062c --- /dev/null +++ b/src/leecode/javascript/44.通配符匹配.js @@ -0,0 +1,42 @@ +/* + * @lc app=leetcode.cn id=44 lang=javascript + * + * [44] 通配符匹配 + */ + +// @lc code=start +/** + * @param {string} s + * @param {string} p + * @return {boolean} + */ +var isMatch = function (s, p) { + const cache = {}; + return dp(0, 0, s, p, cache); +}; + +var dp = (si, pi, s, p, cache) => { + const key = `${si}:${pi}`; + if (key in cache) { + return cache[key]; + } + if (si == s.length) { + //空字符串匹配剩余全部是*的情况 + return pi >= p.length || (p.charAt(pi) == '*' && dp(si, pi + 1, s, p, cache)); + } + if (pi >= p.length) { + cache[key] = false; + return false; + } + const sVal = s.charAt(si); + const pVal = p.charAt(pi); + let ret = false; + if (pVal == '?' || pVal == sVal) { + ret = dp(si + 1, pi + 1, s, p, cache); + } else if (pVal == '*') { + ret = dp(si + 1, pi + 1, s, p, cache) || dp(si + 1, pi, s, p, cache) || dp(si, pi + 1, s, p, cache); + } + cache[key] = ret; + return ret; +}; +// @lc code=end