Loading Now

[STLC++Map] countPrefix

STL C++ Map

Đề bài:

Cho một danh bạ điện thoại và danh sách các tên. Ứng với mỗi tên trong danh sách hãy đếm xem tên này là bắt đầu của bao nhiêu tên trong danh bạ điện thoại, hay nói cách khác hãy đếm xem tên này là prefix của bao nhiêu tên trong danh bạ.

Ví dụ:

  • Với contacts = ["Codelearn", "Codewar"],
    names = ["Code", "Codel", "io"]
    thì countPrefix(contacts, names) = [2,1,0].

 

Hướng dẫn.

Sử dụng map<string, int> để lưu số lần xuất hiện của các prefix trong danh bạ. Sau đó sử dụng toán tử [] để lấy ra số lần xuất hiện của các tên.

Code mẫu:

vector<int> countPrefix(vector<string> contacts, vector<string> names)
{
    map<string, int> mp;
    for (auto x : names)
    {
        int cnt = 0;
        for (auto y : contacts)
        {   
            bool f = 1;
            for (int i = 0; i < x.length(); i++)
            {
                if (x[i] != y[i])
                    f = 0;
            }
            if (f)
                cnt++;
        }
        mp[x] = cnt;
    }
    vector<int> result;
    for(auto name:names){
        result.push_back(mp[name]);
    }
    return result;
}

Post Comment

Contact