【leetcode】1023. Camelcase Matching
题目如下:
A query word matches a given
pattern
if we can insert lowercaseletters to the pattern word so that it equals thequery
. (We may insert each character at any position, and may insert 0 characters.)Given a list of
queries
, and apattern
, return ananswer
list of booleans, whereanswer[i]
is true if and only ifqueries[i]
matches thepattern
.
Example 1:
Input: queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FB" Output: [true,false,true,true,false] Explanation: "FooBar" can be generated like this "F" + "oo" + "B" + "ar". "FootBall" can be generated like this "F" + "oot" + "B" + "all". "FrameBuffer" can be generated like this "F" + "rame" + "B" + "uffer".
Example 2:
Input: queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBa" Output: [true,false,true,false,false] Explanation: "FooBar" can be generated like this "Fo" + "o" + "Ba" + "r". "FootBall" can be generated like this "Fo" + "ot" + "Ba" + "ll".
Example 3:
Input: queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBaT" Output: [false,true,false,false,false] Explanation: "FooBarTest" can be generated like this "Fo" + "o" + "Ba" + "r" + "T" + "est".
Note:
1 <= queries.length <= 100
1 <= queries[i].length <= 100
1 <= pattern.length <= 100
- All strings consists only of lower and upper case English letters.
解题思路:这种模式匹配的题目,感觉还是用正则表达式简单些。例如 pattern = "FoBaT",转换成正则表达式的pattern="^[a-z]*F[a-z]*o[a-z]*B[a-z]*a[a-z]*T[a-z]*$"。
代码如下:
class Solution(object): def camelMatch(self, queries, pattern): """ :type queries: List[str] :type pattern: str :rtype: List[bool] """ res = [] import re rePattern = '^[a-z]*' for i,v in enumerate(pattern): rePattern += v rePattern += '[a-z]*' #rePattern = rePattern[:-2] rePattern += '$' for i in queries: r = re.search(rePattern, i) if r == None: res.append(False) continue r = r.group() subq = i[len(r):] res.append(len(subq) == 0 or subq.islower()) return res