811. 子域名访问计数

解题思路:

  • 将每个域名用哈希表存储起来,出现次数相加,便可以得到数据,具体思路:
    1. 将前面的数字转化成int类型数字
    2. ' '(空格) 或者 '.'(点) 之后字符串存入到哈希表中充当键值
    3. 将前面的数字累加到对应的哈希表中

代码实现:

class Solution {
public:
    unordered_map<string,int> ax;
    vector<string> str;
    vector<string> subdomainVisits(vector<string>& cpdomains) {
        int n=cpdomains.size();
        for(int i=0;i<n;i++)
        {
            int m=cpdomains[i].length();
            int num=0;
            for(int j=0;j<m;j++)
            {
                if(cpdomains[i][j]<='9'&&cpdomains[i][j]>='0')  //是数字将其由string字符串转化为int类型整数
                {
                    num=num*10+(cpdomains[i][j]-'0');
                }
                if(cpdomains[i][j]==' '||cpdomains[i][j]=='.')  //如果是点或者空格的话,则需要将其后的域名存储
                {
                    ax[cpdomains[i].substr(j+1)]+=num;
                }
            }
        }
        for(auto it=ax.begin();it!=ax.end();it++)   //迭代器取用每个哈希表键值对
        {
            int cx=it->second;
            string dx=to_string(cx);                //利用to_string()函数将int型转化为string型
            dx=dx+' '+it->first;                    //连接
            str.push_back(dx);                      //压入vector<string>中
        }
        return str;
    }
};

复杂度分析:

  • 时间复杂度为O(n^2);
  • 空间复杂度为O(n^2);
posted on 2022-10-05 19:00  叶落偏多雨  阅读(79)  评论(0)    收藏  举报