【LeetCode】子域名访问计数 Java 题解
题目描述
网站域名 "discuss.leetcode.com" 由多个子域名组成。顶级域名为 "com" ,二级域名为 "leetcode.com" ,最低一级为 "discuss.leetcode.com" 。当访问域名 "discuss.leetcode.com" 时,同时也会隐式访问其父域名 "leetcode.com" 以及 "com" 。
计数配对域名 是遵循 "rep d1.d2.d3" 或 "rep d1.d2" 格式的一个域名表示,其中 rep 表示访问域名的次数,d1.d2.d3 为域名本身。
例如,"9001 discuss.leetcode.com" 就是一个 计数配对域名 ,表示 discuss.leetcode.com 被访问了 9001 次。给你一个 计数配对域名 组成的数组 cpdomains ,解析得到输入中每个子域名对应的 计数配对域名 ,并以数组形式返回。可以按 任意顺序 返回答案。
思路分析
今天的算法题目是字符串处理题目,题目要求计算子域名访问计数。那什么是子域名呢?题目中给定了子域名的定义,网站域名 "discuss.leetcode.com" 由多个子域名组成。顶级域名为 "com" ,二级域名为 "leetcode.com" ,最低一级为 "discuss.leetcode.com"。简单理解,就是我们需要从完整域名开始,按照 . 分割,依次分割出三级域名,二级域名和顶级域名。
统计域名的访问次数,我们最常用的数据结构是 HashMap, HashMap 是以空间换时间的数据结构,我们可以以域名为 key, 访问次数为 value 做存储。
在做字符串拼接的时候,建议使用 StringBuilder 来操作,执行效率高。具体实现代码如下,供参考。
通过代码
总结
这个题目理解题意之后,我们采用 hashMap 数据结构即可解决,本题重点考察的是对编程语言 API 的掌握程度。
上述算法的时间复杂度是 O(n),空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【Albert】的原创文章。
原文链接:【http://xie.infoq.cn/article/591ba96aa1183f3c1c1f185e0】。文章转载请联系作者。
评论