Leetcode 811. 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, we also visit the parent domains automatically.
For example, if we visit “discuss.leetcode.com”, we will also visit “leetcode.com” and “com”.
Now, you are given a list cpdomains
of count-paired domains. Each element in cpdomains
is a string that consists of a count and a domain. The task is to calculate the number of visits to each subdomain.
Input:
["9001 discuss.leetcode.com"]
Output:
["9001 discuss.leetcode.com", "9001 leetcode.com", "9001 com"]
cpdomains
will not exceed 100.cpdomains
will not exceed 100.cpdomains
?
cpdomains
:
.
to handle subdomains.import java.util.*;
public class SubdomainVisitCount {
public List<String> subdomainVisits(String[] cpdomains) {
Map<String, Integer> domainCounts = new HashMap<>();
for (String cpdomain : cpdomains) {
String[] parts = cpdomain.split(" ");
int count = Integer.parseInt(parts[0]);
String domain = parts[1];
String[] subdomains = domain.split("\\.");
String currDomain = "";
for (int i = subdomains.length - 1; i >= 0; i--) {
currDomain = subdomains[i] + (currDomain.isEmpty() ? "" : "." + currDomain);
domainCounts.put(currDomain, domainCounts.getOrDefault(currDomain, 0) + count);
}
}
List<String> result = new ArrayList<>();
for (Map.Entry<String, Integer> entry : domainCounts.entrySet()) {
result.add(entry.getValue() + " " + entry.getKey());
}
return result;
}
public static void main(String[] args) {
SubdomainVisitCount svc = new SubdomainVisitCount();
String[] cpdomains = {"9001 discuss.leetcode.com"};
System.out.println(svc.subdomainVisits(cpdomains));
}
}
cpdomains
. This is because we iterate through each input once, and for each domain string, we process each of its subdomains.This solution efficiently computes the visit counts for each subdomain and formats the results correctly.
Got blindsided by a question you didn’t expect?
Spend too much time studying?
Or simply don’t have the time to go over all 3000 questions?