-
Notifications
You must be signed in to change notification settings - Fork 0
/
1023.camelcase-matching.go
95 lines (87 loc) · 2.2 KB
/
1023.camelcase-matching.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package main
// Camelcase Matching
//
// Medium
//
// https://leetcode.com/problems/camelcase-matching/
//
// Given an array of strings `queries` and a string `pattern`, return a boolean
// array `answer` where `answer[i]` is `true` if `queries[i]` matches `pattern`,
// and `false` otherwise.
//
// A query word `queries[i]` matches `pattern` if you can insert lowercase
// English letters pattern so that it equals the query. You may insert each
// character at any position and you may not insert any characters.
//
// **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".
//
// ```
//
// **Constraints:**
//
// - `1 <= pattern.length, queries.length <= 100`
// - `1 <= queries[i].length <= 100`
// - `queries[i]` and `pattern` consist of English letters.
func camelMatch(queries []string, pattern string) []bool {
n := len(queries)
res := make([]bool, n)
check := func(q string) bool {
i, j := 0, 0
for i < len(q) && j < len(pattern) {
if q[i] == pattern[j] {
i++
j++
continue
}
if 'a' <= q[i] && q[i] <= 'z' {
i++
continue
}
return false
}
if j < len(pattern) {
return false
}
for i < len(q) && 'a' <= q[i] && q[i] <= 'z' {
i++
}
return i == len(q)
}
for i, q := range queries {
res[i] = check(q)
}
return res
}