原题说明
A query word matches a given pattern if we can insert lowercase letters to the pattern word so that it equals the query. (We may insert each character at any position, and may insert 0 characters.)
Given a list of queries, and a pattern, return an answer list of booleans, where answer[i] is true if and only if queries[i] matches the pattern.
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 <= 1001 <= queries[i].length <= 1001 <= pattern.length <= 100
All strings consists only of lower and upper case English letters.
解题思路
判断每一条query与pattern是否match:
用i和j两个index分别指向query和pattern,遍历query
1)当query[i] == pattern[j]时,++j
2)如果不等且query[i]为大写字母,return false
遍历query结束后,判断j是否走到pattern末尾
示例代码 (cpp)
1 | class Solution { |
示例代码 (java)
1 | class Solution { |
示例代码 (python)
1 | class Solution(object): |
复杂度分析
时间复杂度: O(m * n), n is the size of queries, m is the length of each query
空间复杂度: O(n)
归纳总结
我们在Youtube上更新了视频讲解,欢迎关注!