LeetCode算法题-Subdomain Visit Count(Java实现)
这是悦乐书的第320次更新,第341篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第189题(顺位题号是811)。像“discuss.leetcode.com”这样的网站域名由各种子域组成。在顶级,我们有“com”,在下一级,我们有“leetcode.com”,在最低级别,“discuss.leetcode.com”。当我们访问像“discuss.leetcode.com”这样的域名时,我们也会隐含地访问父名“leetcode.com”和“com”。
现在,将“计数配对域名”称为计数(表示此域收到的访问次数),后跟空格,后跟地址。计数配对域名的示例可以是“9001 discuss.leetcode.com”。
给出了计数配对域名的cpdomains数组,以相同的格式,返回所有域名和访问次数组成的字符串数组。例如:
输入:[“9001 discuss.leetcode.com”]
输出:[“9001 discuss.leetcode.com”,“9001 leetcode.com”,“9001 com”]
说明:我们只有一个网站域名:“discuss.leetcode.com”。如上所述,还将访问子域“leetcode.com”和“com”。所以他们将被访问9001次。
输入:[“900 google.mail.com”,“50 yahoo.com”,“1 intel.mail.com”,“5 wiki.org”]
输出:[“901 mail.com”,“50 yahoo.com”,“900 google.mail.com”,“5 wiki.org”,“5 org”,“1 intel.mail.com”,“951 com”]
说明:我们将访问“google.mail.com”900次,“yahoo.com”访问50次,“intel.mail.com”访问一次,“wiki.org”访问5次。对于子域名,我们将访问“mail.com”900 + 1 = 901次,“com”900 + 50 + 1 = 951次,以及“org”5次。
注意:
cpdomains的长度不会超过100。
每个域名的长度不超过100。
每个地址都有1或2个“.”字符。
任何计数配对域名中的访问次数不会超过10000。
答案输出可以按任何顺序返回。
本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。
02 解题
每个域名加访问次数组成的字符串,根据域名中的点号,可以分为两种情况:
(1)域名中只有一个点号时,可以拆分成两个新的字符串,一是访问次数加最后面的顶级域名,二是访问次数加域名本身。
(2)域名中有两个点号时,可以拆分成三个新的字符串,一是访问次数加最后面的顶级域名,二是访问次数加第二级域名加顶级域名,三是访问次数加域名本身。
而顶级域名或者二级域名加顶级域名可能会重复出现,但是点击次数要进行累加,所以借助HashMap来存储数组,key为域名,value为访问次数。
整体思路是遍历cpdomains数组,拆分每一组计数配对域名,存入HashMap中,遍历HashMap存入List中,返回List。
public List<String> subdomainVisits(String[] cpdomains) {
List<String> list = new ArrayList<String>();
HashMap<String, Integer> map = new HashMap<String, Integer>();
for (String str : cpdomains) {
// 根据空格进行第一次拆分
String[] arr = str.split(" ");
// 对第一次拆分的结果以点号进行二次拆分
String[] arr2 = arr[1].split("\\.");
// 第一次拆分中,域名的访问次数
int count = Integer.valueOf(arr[0]);
String current = "";
int n = arr2.length-1;
// 从后往前遍历第二次拆分的结果,存入HashMap
for (int i=n; i >= 0; i--) {
current = arr2[i] + (i<n ? "." : "") + current;
map.put(current, map.getOrDefault(current, 0)+count);
}
}
for (String key : map.keySet()) {
list.add(map.get(key)+" "+key);
}
return list;
}
03 小结
算法专题目前已日更超过五个月,算法题文章189+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。
以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!
LeetCode算法题-Subdomain Visit Count(Java实现)的更多相关文章
- LeetCode算法题-Rotated Digits(Java实现)
这是悦乐书的第316次更新,第337篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第185题(顺位题号是788).如果一个数字经过180度旋转后,变成了一个与原数字不同的 ...
- LeetCode算法题-Image Smoother(Java实现)
这是悦乐书的第282次更新,第299篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第150题(顺位题号是661).给定表示图像灰度的2D整数矩阵M,您需要设计一个平滑器以 ...
- LeetCode算法题-Non-decreasing Array(Java实现)
这是悦乐书的第283次更新,第300篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第151题(顺位题号是665).给定一个包含n个整数的数组,您的任务是通过修改最多1个元 ...
- LeetCode算法题-Distribute Candies(Java实现)
这是悦乐书的第266次更新,第279篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第133题(顺位题号是575).给定具有偶数长度的整数数组,其中该数组中的不同数字表示不 ...
- LeetCode算法题-Detect Capital(Java实现)
这是悦乐书的第251次更新,第264篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第118题(顺位题号是520).给定一个单词,你需要判断其中大写字母的使用是否正确.当下 ...
- LeetCode算法题-Hamming Distance(Java实现)
这是悦乐书的第237次更新,第250篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第104题(顺位题号是461).两个整数之间的汉明距离是相应位不同的位置数.给定两个整数 ...
- LeetCode算法题-Poor Pigs(Java实现)
这是悦乐书的第235次更新,第248篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第102题(顺位题号是455).有1000个水桶,其中只有一个水桶含有毒药,其余的都没毒 ...
- LeetCode算法题-Assign Cookies(Java实现)
这是悦乐书的第234次更新,第247篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第101题(顺位题号是455).假设你是一个很棒的父母,并想给你的孩子一些饼干.但是,你 ...
- LeetCode算法题-Add Strings(Java实现)
这是悦乐书的第223次更新,第236篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第90题(顺位题号是415).给定两个非负整数num1和num2表示为字符串,返回num ...
随机推荐
- 清理out的浏览器收藏夹发现的
刚才清理了一下自己的浏览器书签,其实好几年不做收藏了,常用的直接放到书签栏里就行了. 发现不少之前的技术内容域名都被色情病毒经营者续费利用,相关技术内容都是VB.SQL.XMAPP这些过期的玩意,其中 ...
- Scala编程入门---函数式编程
高阶函数 Scala中,由于函数时一等公民,因此可以直接将某个函数传入其他函数,作为参数.这个功能是极其强大的,也是Java这种面向对象的编程语言所不具备的. 接收其他函数作为函数参数的函数,也被称作 ...
- (五)SpringBoot2.0基础篇- Mybatis与插件生成代码
SpringBoot与Mybatis合并 一.创建SpringBoot项目,引入相关依赖包: <?xml version="1.0" encoding="UTF-8 ...
- 佛祖镇楼,BUG避易
def FZZL(): print(" _ooOoo_ ") print(" o8888888o ") print(" 88 . 88 ") ...
- Python_正则表达式二
''' 正则表达式对象的sub(repl,string[,count=0])和subn(repl,string[,count=0])方法用来实现字符串替换功能 ''' example='''Beaut ...
- Maven学习(六)-- Maven与Eclipse整合
由于我使用的是IDEA所以就不摘录了,感兴趣的移步 Maven学习总结(六)--Maven与Eclipse整合 Maven学习总结(七)--eclipse中使用Maven创建Web项目
- 微软project文件mpp解析
最近在做一个项目管理的项目,主要是将用户在project文件中写的一些东西,读出来,并将其写入到数据库中. 也是借鉴了好多大佬的思想和代码,感觉自己需要整理一遍,所以,接下来就是表演的时候了. 第一步 ...
- PAT1055:The World's Richest
1055. The World's Richest (25) 时间限制 400 ms 内存限制 128000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
- 向Oracle数据库插入中文乱码解决方法
解决方法: 第一步:sqlplus下执行:select userenv('language') from dual;//查看oracle字符集 注:如果oracle字符集与后台代码设置的 ...
- PHP之连接mysql小练习
mysql Test.sql 1 -- phpMyAdmin SQL Dump -- version 4.6.6 -- https://www.phpmyadmin.net/ -- -- Host: ...