GuilinDev

Lc0811

05 August 2008

811. Subdomain Visit Count

对于包含一个 . 的域名 x.y,需要统计的是 x.y 和 y;对于包含两个 . 的域名 a.b.c,我们需要统计的是 a.b.c,b.c 和 c。在统计这些字符串时,可以使用哈希映射(HashMap)。统计结束之后,我们遍历哈希映射并输出结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
    public List<String> subdomainVisits(String[] cpdomains) {
        Map<String, Integer> counts = new HashMap();
        for (String domain : cpdomains) {
            String[] cpinfo = domain.split("\\s+");
            String[] frags = cpinfo[1].split("\\.");
            int count = Integer.parseInt(cpinfo[0]);
            String cur = "";
            for (int i = frags.length - 1; i >= 0; --i) {
                cur = frags[i] + (i < frags.length - 1 ? "." : "") + cur;
                counts.put(cur, counts.getOrDefault(cur, 0) + count);
            }
        }

        List<String> ans = new ArrayList();
        for (String dom : counts.keySet())
            ans.add("" + counts.get(dom) + " " + dom);
        return ans;
    }
}