Krononberg

811. Subdomain Visit Count.cpp 본문

개발 로그/알고리즘

811. Subdomain Visit Count.cpp

k._. 2021. 10. 20. 19:03

🔑 cpdomain의 각 요소마다, parsing에 의해 생성되는 string을 key로, 선두에 나타나는 숫자를 value로 가지는 map을 생성하면 된다. 단, key가 이미 존재하는 경우, 기존 value에 신규 value를 누적 덧셈한다.

 

class Solution {
public:
    vector<string> subdomainVisits(vector<string>& cpdomains) {
        vector<string>res;
        map<string,int>m;
        for(int i =0; i<cpdomains.size(); i++){
            string numStr = "";
            for(int j =0; j<cpdomains[i].size(); j++){
                if(isdigit(cpdomains[i][j])){
                    numStr+= cpdomains[i][j];
                }
                else break;
            }
            int numStrToInt = stoi(numStr);
            
            string domainTmp = "";
            for(int k = cpdomains[i].size(); k--;){
                if(cpdomains[i][k] == '.' || cpdomains[i][k] == ' ' ){
                    if(m.count(domainTmp)) m.find(domainTmp)->second += numStrToInt;
                    else{
                        m.insert(make_pair(domainTmp, numStrToInt));
                    }
                }
                domainTmp = cpdomains[i][k] + domainTmp;
                if(isdigit(cpdomains[i][k])) break;
            }
        }
        
        for (auto &it : m){
            string tmp = "";
            tmp = to_string(it.second) + " " + it.first;
            res.push_back(tmp);
        }
        return res;
    }
};