其他分享
首页 > 其他分享> > LeetCode 811. Subdomain Visit Count

LeetCode 811. Subdomain Visit Count

作者:互联网

原题链接在这里:https://leetcode.com/problems/subdomain-visit-count/

题目:

A website domain "discuss.leetcode.com" consists of various subdomains. At the top level, we have "com", at the next level, we have "leetcode.com" and at the lowest level, "discuss.leetcode.com". When we visit a domain like "discuss.leetcode.com", we will also visit the parent domains "leetcode.com" and "com" implicitly.

A count-paired domain is a domain that has one of the two formats "rep d1.d2.d3" or "rep d1.d2" where rep is the number of visits to the domain and d1.d2.d3 is the domain itself.

Given an array of count-paired domains cpdomains, return an array of the count-paired domains of each subdomain in the input. You may return the answer in any order. 

Example 1:

Input: cpdomains = ["9001 discuss.leetcode.com"]
Output: ["9001 leetcode.com","9001 discuss.leetcode.com","9001 com"]
Explanation: We only have one website domain: "discuss.leetcode.com".
As discussed above, the subdomain "leetcode.com" and "com" will also be visited. So they will all be visited 9001 times.

Example 2:

Input: cpdomains = ["900 google.mail.com", "50 yahoo.com", "1 intel.mail.com", "5 wiki.org"]
Output: ["901 mail.com","50 yahoo.com","900 google.mail.com","5 wiki.org","5 org","1 intel.mail.com","951 com"]
Explanation: We will visit "google.mail.com" 900 times, "yahoo.com" 50 times, "intel.mail.com" once and "wiki.org" 5 times.
For the subdomains, we will visit "mail.com" 900 + 1 = 901 times, "com" 900 + 50 + 1 = 951 times, and "org" 5 times.

Constraints:

题解:

Have a map to maintain the count.

For each dpdomain, first get its count and its domain.

For each domain and its subdomains, accumlate the count.

Note: there are multiple strings. Make sure to name them and don't mix them.

Time Complexity: O(m*n^2). m = dpdomains.length. n = string length. for each char in the string, substring also takes O(n).

Space: O(m*n^2). map size.

AC Java:

 1 class Solution {
 2     public List<String> subdomainVisits(String[] cpdomains) {
 3         List<String> res = new ArrayList<>();
 4         if(cpdomains == null || cpdomains.length == 0){
 5             return res;
 6         }
 7         
 8         Map<String, Integer> hm = new HashMap<>();
 9         for(String s : cpdomains){
10             int ind = s.indexOf(' ');
11             int count = Integer.valueOf(s.substring(0, ind));
12             String d = s.substring(ind + 1);
13             hm.put(d, hm.getOrDefault(d, 0) + count);
14             for(int i = 0; i < d.length(); i++){
15                 if(d.charAt(i) == '.'){
16                     String subD = d.substring(i + 1);
17                     hm.put(subD, hm.getOrDefault(subD, 0) + count);
18                 }
19             }
20         }
21         
22         for(Map.Entry<String, Integer> entry : hm.entrySet()){
23             res.add(entry.getValue() + " " + entry.getKey());
24         }
25         
26         return res;
27     }
28 }

 

标签:Count,count,domain,discuss,811,Subdomain,com,leetcode,times
来源: https://www.cnblogs.com/Dylan-Java-NYC/p/16611596.html