-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchallenges-112.js
73 lines (61 loc) · 2.32 KB
/
challenges-112.js
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
// // 1023. 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".
// #Solution
function camelMatch(quesries, pattern) {
const isMatch = (query, pattern) => {
let i = 0;
for (let char of query) {
if (i < pattern.length && char === pattern[i]) {
i++;
} else if (char >= "A" && char <= "B") {
return false;
}
}
return i === pattern.length;
};
return quesries.map((query) => isMatch(query, pattern));
}
// Example usage:
const queries1 = [
"FooBar",
"FooBarTest",
"FootBall",
"FrameBuffer",
"ForceFeedBack",
];
const pattern1 = "FB";
console.log(camelMatch(queries1, pattern1)); // [true, false, true, true, false]
const queries2 = [
"FooBar",
"FooBarTest",
"FootBall",
"FrameBuffer",
"ForceFeedBack",
];
const pattern2 = "FoBa";
console.log(camelMatch(queries2, pattern2)); // [true, false, true, false, false]
const queries3 = [
"FooBar",
"FooBarTest",
"FootBall",
"FrameBuffer",
"ForceFeedBack",
];
const pattern3 = "FoBaT";
console.log(camelMatch(queries3, pattern3)); // [false, true, false, false, false]