【Lintcode】1006. Subdomain Visit Count

题目地址:

https://www.lintcode.com/problem/subdomain-visit-count/description

给定一个形如正整数 + 空格 + 域名格式的字符串组成的数组,正整数表示该域名被访问了多少次。要求对每个域名进行计数,包括每个域名的各个子域名。返回相同格式的字符串数组。

可以用哈希表进行计数。代码如下:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Solution {
    /**
     * @param cpdomains: a list cpdomains of count-paired domains
     * @return: a list of count-paired domains
     */
    public List<String> subdomainVisits(String[] cpdomains) {
        // Write your code here
        Map<String, Integer> map = new HashMap<>();
        for (String cpdomain : cpdomains) {
            String[] sp = cpdomain.split(" ");
            int count = Integer.parseInt(sp[0]);
    
            String domain = sp[1];
            map.put(domain, map.getOrDefault(domain, 0) + count);
    
            for (int i = 0; i < domain.length(); i++) {
                if (domain.charAt(i) == '.') {
                    String sub = domain.substring(i + 1);
                    map.put(sub, map.getOrDefault(sub, 0) + count);
                }
            }
        }
        
        List<String> res = new ArrayList<>();
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            res.add(String.valueOf(entry.getValue()) + ' ' + entry.getKey());
        }
        
        return res;
    }
}

时空复杂度 O ( n l ) O(nl) O(nl) n n n为字符串个数, l l l为最长字符串长度。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页