leetcode-811-Subdomain Visit Count
题目描述:
A website domain like "discuss.leetcode.com" consists of various subdomains. At the top level, we have "com", at the next level, we have "leetcode.com", and at the lowest level, "discuss.leetcode.com". When we visit a domain like "discuss.leetcode.com", we will also visit the parent domains "leetcode.com" and "com" implicitly.
Now, call a "count-paired domain" to be a count (representing the number of visits this domain received), followed by a space, followed by the address. An example of a count-paired domain might be "9001 discuss.leetcode.com".
We are given a list cpdomains
of count-paired domains. We would like a list of count-paired domains, (in the same format as the input, and in any order), that explicitly counts the number of visits to each subdomain.
Example 1:
Input:
["9001 discuss.leetcode.com"]
Output:
["9001 discuss.leetcode.com", "9001 leetcode.com", "9001 com"]
Explanation:
We only have one website domain: "discuss.leetcode.com". As discussed above, the subdomain "leetcode.com" and "com" will also be visited. So they will all be visited 9001 times.
Example 2:
Input:
["900 google.mail.com", "50 yahoo.com", "1 intel.mail.com", "5 wiki.org"]
Output:
["901 mail.com","50 yahoo.com","900 google.mail.com","5 wiki.org","5 org","1 intel.mail.com","951 com"]
Explanation:
We will visit "google.mail.com" 900 times, "yahoo.com" 50 times, "intel.mail.com" once and "wiki.org" 5 times. For the subdomains, we will visit "mail.com" 900 + 1 = 901 times, "com" 900 + 50 + 1 = 951 times, and "org" 5 times.
Notes:
- The length of
cpdomains
will not exceed100
. - The length of each domain name will not exceed
100
. - Each address will have either 1 or 2 "." characters.
- The input count in any count-paired domain will not exceed
10000
. - The answer output can be returned in any order.
要完成的函数:
vector<string> subdomainVisits(vector<string>& cpdomains)
说明:
1、这道题给定一个vector,里面装着多个字符串。每个字符串是这样子的,"900 google.mail.com",最开始是数字,表示这个域名访问了多少次,后面是域名。
如上述例子,我们知道访问了900次google.mail.com,还访问了900次mail.com,还访问了900次com。
看一下example2就会很清晰了。
最后这道题要求我们返回所有的访问次数+访问域名,依旧是字符串的格式,存储在vector中。
2、题意清晰,这道题就是一道工程题,比较适合用python来写脚本。
但c++一直在用,就继续写下去吧。
首先,取出字符串中的数字,之后取出域名,域名要拆解出多个父域名。
然后,把这些域名+数字存储到map中去,不断累加。
最后,再把map中的结果存储到vector中,返回。
代码如下:
vector<string> subdomainVisits(vector<string>& cpdomains)
{
unordered_map<string, int>m1;
int i,n;//i表示空格位置,n表示出现次数
string s;//取出的网址
for(auto word:cpdomains) //使用auto方便很多
{
i=word.find(" ");
n=stoi(word.substr(0,i)); //stoi函数转换string到int
s=word.substr(i+1,word.size()-i-1);
for(int i=s.size()-1;i>=0;i--) //逐个处理
{
if(s[i]=='.')
m1[s.substr(i+1,s.size()-i-1)]+=n;
else if(i==0)
m1[s.substr(i,s.size()-i)]+=n;
}
}
vector<string>res;
for(auto element:m1)
res.push_back(to_string(element.second)+" "+element.first);
return res;
}
上述代码实测13ms,beats 99.55% of cpp submissions。
感谢leetcode用户@code_report在discuss的分享,上述代码的实现参考了他的做法。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【python实现卷积神经网络】padding2D层实现
- mybatis之全局配置文件中的标签
- 【python实现卷积神经网络】Flatten层实现
- Shiro框架学习笔记(二)基于内置ini文件的身份认证
- 【python实现卷积神经网络】上采样层upSampling2D实现
- mybatis映射文件之获取自增的主键
- django实战(二)--带多字段模糊查询的分页(也是不容易)
- 【python实现卷积神经网络】Dropout层实现
- 【python实现卷积神经网络】激活层实现
- django实战(三)--删除和批量删除
- 【python实现卷积神经网络】定义训练和测试过程
- 最短路径算法java
- django实战(四)--修改数据
- Shiro框架学习笔记(三)与web集成之后进行简单的身份验证
- 【python实现卷积神经网络】卷积层Conv2D实现(带stride、padding)