- [Leetcode 3407. Substring Matching Pattern](#Leetcode 3407. Substring Matching Pattern)
- [1. 解题思路](#1. 解题思路)
- [2. 代码实现](#2. 代码实现)
1. 解题思路
这一题是一道leetcode easy的题目,照说应该没啥的,不过实际我做的时候在这里卡了一下,所以还是拿过来稍微记录一下好了。
这道题核心还是字符串的匹配,不过麻烦的点在于*
符号可以替换一个或多个字符,然后剩下的部分又会是连续的,因此这里相当于是一个另类的lcs匹配问题。
我最后给的解答还是比较暴力的,就是先按照*
将pattern字符串p
进行切分,然后顺序考察其中的每一个非空子串是否可以顺序在原始字符串s
当中找到。
2. 代码实现
给出python代码实现如下:
python
class Solution:
def hasMatch(self, s: str, p: str) -> bool:
p = p.strip("*").split("*")
i, n = 0, len(s)
for sub in p:
if sub == "":
continue
while i < n and not s[i:].startswith(sub):
i += 1
if i >= n:
return False
i += len(sub)
return True
提交代码评测得到:耗时0ms,占用内存17.7MB。