1006. 子域名访问计数

1006. 子域名访问计数

 
诸如discuss.lintcode.com这样的域名由各种子域名构成。最顶层是com,下一层是lintcode.com,最底层是discuss.lintcode.com.当访问discuss.lintcode.com时,会隐式访问子域名lintcode.comcom.
现给出域名的访问计数格式为“空格 地址”。 示例:9001 discuss.lintcode.com.
给出计数列表cpdomains. 返回每个子域名(包含父域名)的访问次数(与输入格式相同,顺序任意).

样例

样例 1:
输入:
输出:
["9001 discuss.lintcode.com", "9001 lintcode.com", "9001 com"]
解释:
只有一个域名:"discuss.lintcode.com". 如题所述,
子域名"lintcode.com"和"com"也会被访问. 所以一共要访问9001次.
样例 2:
输入:
输出:
解释:
一共访问900次"google.mail.com",50次"yahoo.com",1次"intel.mail.com",5次"wiki.org".
对于所有的子域名,会访问 900 + 1 = 901 次"mail.com",900 + 50 + 1 = 951 次"com",5次"org".

注意事项

  • cpdomains的长度不超过100.
  • 每个域名的长度不超过100.
  • 会有1到2个.包含在每个域名中.
  • 任何域名的访问计数都不会超过10000.
  • 返回结果的条目顺序随意.
 
public class Solution {
   List<String> list = new ArrayList<>();
    HashMap<String, Integer> hashMap = new HashMap<>();
    public List<String> subdomainVisits(String[] cpdomains) {
        // Write your code here
        for (String s : cpdomains) {
            String[] temp = s.split(" ");
            int number = Integer.parseInt(temp[0]);
            String[] com = temp[1].split("\\.");
            addHashData(temp[1], number);
            String value=com[com.length-1];
            addHashData(value, number);
            for (int i = com.length-2; i > 0 ; i--) {
                value=com[i]+"."+value;
                addHashData(value,number);
            }
        }
        Iterator iter = hashMap.entrySet().iterator();
        while (iter.hasNext()) {
            Map.Entry entry = (Map.Entry) iter.next();
            Object key = entry.getKey();
            Object val = entry.getValue();
            list.add(val+" "+key);
        }
        return list;
    }
 
 
    private void addHashData(String value, int number) {
        if (hashMap.containsKey(value)) {
            hashMap.put(value, number + hashMap.get(value));
        } else
            hashMap.put(value, number);
    }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时代我西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值