problems: add number of matching subsequences

Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
Matej Focko 2022-07-20 17:09:12 +02:00
parent 891c50440e
commit d83859da38
Signed by: mfocko
GPG key ID: 7C47D46246790496

View file

@ -0,0 +1,34 @@
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);
});
}
};