子域名访问计数 Subdomain Visit Count

一个网站域名,如"discuss.leetcode.com",包含了多个子域名。作为顶级域名,常用的有"com",下一级则有"leetcode.com",最低的一级为"discuss.leetcode.com"。当我们访问域名"discuss.leetcode.com"时,也同时访问了其父域名"leetcode.com"以及顶级域名 "com"。

给定一个带访问次数和域名的组合,要求分别计算每个域名被访问的次数。其格式为访问次数+空格+地址,例如:"9001 discuss.leetcode.com"。

接下来会给出一组访问次数和域名组合的列表cpdomains 。要求解析出所有域名的访问次数,输出格式和输入格式相同,不限定先后顺序。

 

class Solution {
    public List<String> subdomainVisits(String[] cpdomains) {
        List<String> list = new ArrayList<String>();
        Map<String, Integer> map = new HashMap<String, Integer>();
        for (int i = 0; i < cpdomains.length; i++) {
            String[] s = cpdomains[i].split(" ");
            if(map.containsKey(s[1])){
                map.put(s[1], Integer.parseInt(s[0])+map.get(s[1]));
            }else{
                map.put(s[1], Integer.parseInt(s[0]));
            }
                
            int index1 = s[1].indexOf(".");
            s[1] = s[1].substring(index1 +1);
            
            if(map.containsKey(s[1]) && index1 != -1){
                map.put(s[1], Integer.parseInt(s[0])+map.get(s[1]));
            }else if(!map.containsKey(s[1]) && index1 != -1){
                map.put(s[1], Integer.parseInt(s[0]));
            }
            if(index1 == -1 ) break;
            int index2 = s[1].indexOf(".");
            s[1] = s[1].substring(index2 +1);
            if(map.containsKey(s[1])&& index2 !=-1){
                map.put(s[1], Integer.parseInt(s[0])+map.get(s[1]));
            }else if(!map.containsKey(s[1])&& index2 !=-1){
                map.put(s[1], Integer.parseInt(s[0]));
            }
        }
        for(Map.Entry<String, Integer> m:map.entrySet()){
            StringBuffer sb = new StringBuffer();
            sb.append(m.getValue().toString()).append(" ").append(m.getKey());
            list.add(sb.toString());
        }
        return list;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值