개발 로그/알고리즘
811. Subdomain Visit Count.cpp
CyberSoak
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;
}
};