​力扣解法汇总811.子域名访问计数

news/2024/7/5 2:15:45

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

网站域名 "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 ,解析得到输入中每个子域名对应的 计数配对域名 ,并以数组形式返回。可以按 任意顺序 返回答案。

示例 1:

输入:cpdomains = ["9001 discuss.leetcode.com"]
输出:["9001 leetcode.com","9001 discuss.leetcode.com","9001 com"]
解释:例子中仅包含一个网站域名:"discuss.leetcode.com"。
按照前文描述,子域名 "leetcode.com" 和 "com" 都会被访问,所以它们都被访问了 9001 次。

示例 2:

输入:cpdomains = ["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" 1 次,"wiki.org" 5 次。
而对于父域名,会访问 "mail.com" 900 + 1 = 901 次,"com" 900 + 50 + 1 = 951 次,和 "org" 5 次。

提示:

  • 1 <= cpdomain.length <= 100
  • 1 <= cpdomain[i].length <= 100
  • cpdomain[i] 会遵循 "repi d1i.d2i.d3i" 或 "repi d1i.d2i" 格式
  • repi 是范围 [1, 104] 内的一个整数
  • d1id2i 和 d3i 由小写英文字母组成

解题思路:

* 解题思路:
* 用map来记录出现的次数,key为域名,value为出现的次数。
* 录入一个域名和次数时,同时录入对应的父级域名的次数

代码:

public class Solution811 {

    public List<String> subdomainVisits(String[] cpdomains) {
        Map<String, Integer> timeMap = new HashMap<>();
        for (String str : cpdomains) {
            String[] s = str.split(" ");
            int time = Integer.parseInt(s[0]);
            String cpdomain = s[1];
            add2Map(timeMap, cpdomain, time);
        }
        List<String> list = new ArrayList<>();
        for (String key : timeMap.keySet()) {
            list.add(timeMap.get(key) + " " + key);
        }
        return list;
    }

    private void add2Map(Map<String, Integer> timeMap, String cpdomain, int time) {
        String[] split = cpdomain.split("\\.");
        StringBuilder builder = new StringBuilder();
        for (int i = split.length - 1; i >= 0; i--) {
            if (i == split.length - 1) {
                builder.insert(0, split[i]);
            } else {
                builder.insert(0, split[i] + ".");
            }
            String key = builder.toString();
            timeMap.put(key, timeMap.getOrDefault(key, 0) + time);
        }
    }
}


http://lihuaxi.xjx100.cn/news/80663.html

相关文章

为何非要自建邮件系统不可?

随着企业集团信息化建设的不断完善&#xff0c;邮件系统日益成为企业对外沟通的重要办公系统之一发挥着不可替代作用&#xff0c;在整个公司网络架构中也占了很大的比重 随着科技时代的发展&#xff0c;为何自建邮件系统日益成为企业的首选目标&#xff1f;相对租用邮件系统而言…

微生物学期末复习重点

名词解释 氨基酸异养微生物&#xff1a;需要从外界吸收现成的氨基酸作氮源的微生物。病毒粒子&#xff1a;结构与功能完整的病毒颗粒。共生关系&#xff1a;指两种微生物共同生活在一起时在形态上形成了特殊共生体&#xff0c;在生理上产生了一定的分工&#xff0c;互相有利&a…

vue项目yarn初始化项目报错error D:\xxx\node_modules\node-sass;终极解决方案

问题&#xff1a;入职公司&#xff0c;接手项目yarn初始化项目一直失败崩溃啊&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 报错内容&#xff1a; error D:\xxx\xxx\node_modules\node-sass: Command failed. Exit code: 1 Comman…

JSCORE05

文章目录JSCORE05复习推荐数组方法模板字符串声明变量的方式for..of箭头函数for..of箭头函数JSCORE05 JSCORE部分的知识点 已经整理到一起: 只包含必会的精华部分. 到 FTP 下载 /12_JSCORE/JSCORE_ALL 两种格式, 内容一样 svg小 png大 复习 正则对象 正则表达式: 是一套独立的体…

一文读懂 Golang init 函数执行顺序

文章目录1.init 函数简介2.执行顺序2.1 单个源文件的 init 执行顺序2.2 单个包的 init 执行顺序2.3 main 包导入多个包时 init 执行顺序2.3.1 不存在依赖2.3.2 存在依赖2.4 包级变量初始化与 init 函数执行顺序3.小结参考文献1.init 函数简介 Golang init 函数是一种特殊的函数…

基于JAVA动漫的门户网站计算机毕业设计源码+系统+lw文档+部署

基于JAVA动漫的门户网站计算机毕业设计源码系统lw文档部署 基于JAVA动漫的门户网站计算机毕业设计源码系统lw文档部署本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件&#xff1a;idea eclipse 前端技术&#xff1a;Layui、H…

地图数据设计(三):坐标参考系统的选择

前言 上一篇文章介绍了如何对矢量数据进行预处理&#xff0c;接下来正式进入地图的制作。地图制作的第一步&#xff0c;是选择一个恰当的地图坐标系。为什么呢&#xff1f;因为地图坐标系作为地图数学基础的租成部分&#xff0c;描述了制图要素的空间位置&#xff0c;是识图读…

三种时空模式下的全脑功能组织

导读 静息态功能磁共振成像技术似乎对人脑的大规模组织产生了不同的见解。大脑的大规模组织可以分为两大类&#xff1a;功能连接结构的零滞后表征和行波或传播结构的时滞表征。本研究试图以三种低频时空模式的形式整合这两个类别中观察到的现象&#xff0c;这些低频时空模式由…