less than 1 minute read

Categories:

Tags: ,

problem:

source: Count Pairs Of Similar Strings

Identify problem

given the vector of strings, we have to identify the number of strings that has matching occurance of char(alphabet).

Approach

use bitwise operation

Code:

int similarPairs(vector<string>& words) {
    unordered_map<int, int> m;
    for (auto &w : words)
    {
        m[accumulate(begin(w), end(w), 0, 
                    [](int res, char ch) 
                    {
                        return res | (1 << (ch - 'a')); 
                    })] += 1;
    }
    return accumulate(begin(m), end(m), 0, 
                    [](int res, const auto &p) 
                    {
                         return res + p.second * (p.second - 1) / 2;
                    });
}

note

std::accumulate could be found in #include <numeric>. Also note that the type returned by std::accumulate follows the initial value(3rd param of accumulate function).

https://math.stackexchange.com/questions/2214839/exactly-how-does-the-equation-nn-1-2-determine-the-number-of-pairs-of-a-given

Leave a comment