1
0
Fork 0
mirror of https://gitlab.com/mfocko/LeetCode.git synced 2024-11-14 09:59:41 +01:00
LeetCode/cpp/number-of-matching-subsequences.cpp

34 lines
905 B
C++
Raw Normal View History

class Solution {
bool matches(const string &s, const string &word) const {
auto s_i = 0;
for (auto i = 0; s_i < s.size() && i < word.size(); i++) {
if (s[s_i] == word[i]) {
s_i++;
}
}
return s_i == s.size();
}
map<string, int> preprocess(const vector<string> &words) const {
map<string, int> histogram;
for (auto &w : words) {
histogram[w]++;
}
return histogram;
}
public:
int numMatchingSubseq(string s, vector<string> &words) {
auto histogram = preprocess(words);
return accumulate(histogram.begin(), histogram.end(), 0,
[&](int acc, const auto &pair) {
return acc +
(matches(pair.first, s) ? pair.second : 0);
});
}
};