811. Subdomain Visit Count

Stella981
• 阅读 482

这题主要难在构建关联容器,方法很多,但是核心都是把原字符串一截一截减下来处理,先把前面用空格隔开的次数转化为整数,然后处理后面的多层子域。

方法一,查找标志字符,用标志字符把字符串分成几段

 1 static int wing=[]()
 2 {
 3     std::ios::sync_with_stdio(false);
 4     cin.tie(NULL);
 5     return 0;
 6 }();
 7 
 8 class Solution 
 9 {
10 public:
11     vector<string> subdomainVisits(vector<string>& cpdomains) 
12     {    
13         unordered_map<string,int> simap;
14         for(string &s:cpdomains)
15         {
16             int i=s.find(" ");
17             int times=stoi(s.substr(0,i));
18             string ss=s.substr(i+1,s.size()-i-1);
19             simap[ss]+=times;
20             int sssz=ss.size();
21             for(int i=0;i<sssz;i++)
22             {
23                 if(ss[i]=='.')
24                     simap[ss.substr(i+1,sssz-i-1)]+=times;
25             }            
26         }
27         vector<string>res;
28         for(auto &p:simap)
29             res.push_back(to_string(p.second)+" "+p.first);
30         return res;
31     }
32 };

方法二,用stringstream

 1 static int wing=[]()
 2 {
 3     std::ios::sync_with_stdio(false);
 4     cin.tie(NULL);
 5     return 0;
 6 }();
 7 
 8 class Solution 
 9 {
10 public:
11     vector<string> subdomainVisits(vector<string>& cpdomains) 
12     {    
13         unordered_map<string,int> simap;
14         for(string &s:cpdomains)
15         {
16             stringstream ss;
17             int cnt=0;
18             string dom;
19             ss<<s;
20             ss>>cnt>>dom;
21             simap[dom]+=cnt;
22             int sz=dom.size();
23             for(int i=0;i<sz;i++)
24             {
25                 if(dom[i]=='.')
26                     simap[dom.substr(i+1,sz-i-1)]+=cnt;
27             }
28         }
29         vector<string> res;
30         for(auto &p:simap)
31             res.push_back(to_string(p.second)+" "+p.first);
32         return res;
33     }
34 };

用stringstream的方法速度要慢一些

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Bill78 Bill78
3年前
Python 字符串常用方法总结
明确:对字符串的操作方法都不会改变原来字符串的值1,去掉空格和特殊符号name.strip()去掉空格和换行符name.strip('xx')去掉某个字符串name.lstrip()去掉左边的空格和换行符name.rstrip()去掉右边的空格和换行符2,字符串的搜索和替换name.count('x')查找某个
Stella981 Stella981
3年前
JS 苹果手机日期显示NaN问题
问题描述newDate("2019122910:30:00")在IOS下显示为NaN原因分析带的日期IOS下存在兼容问题解决方法字符串替换letdateStr"2019122910:30:00";datedateStr.repl
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
JavaScript常用函数
1\.字符串长度截取functioncutstr(str,len){vartemp,icount0,patrn/^\x00\xff/,strre"";for(vari
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这