<filename>p811-subdomain-visit-count.py<gh_stars>0
# A website domain like "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.

# Now, call a "count-paired domain" to be a count (representing the number of
# visits this domain received), followed by a space, followed by the address.
# An example of a count-paired domain might be "9001 discuss.leetcode.com".

# We are given a list cpdomains of count-paired domains. We would like a list
# of count-paired domains, (in the same format as the input, and in any order),
# that explicitly counts the number of visits to each subdomain.


class Solution:

    def subdomainVisits(self, cpdomains):
        """
        :type cpdomains: List[str]
        :rtype: List[str]
        """
        from collections import defaultdict

        visit = defaultdict(int)
        for cp in cpdomains:
            c, p = cp.split()
            ps = p.split(".")
            for pd in [".".join(ps[i:]) for i in range(len(ps))]:
                visit[pd] += int(c)
        return ["{} {}".format(c, d) for d, c in visit.items()]


sol = Solution().subdomainVisits

print(sol(["9001 discuss.leetcode.com"]))
print(sol(["900 google.mail.com", "50 yahoo.com", "1 intel.mail.com", "5 wiki.org"]))

<filename>p811-subdomain-visit-count.py<gh_stars>0
# A website domain like "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.

# Now, call a "count-paired domain" to be a count (representing the number of
# visits this domain received), followed by a space, followed by the address.
# An example of a count-paired domain might be "9001 discuss.leetcode.com".

# We are given a list cpdomains of count-paired domains. We would like a list
# of count-paired domains, (in the same format as the input, and in any order),
# that explicitly counts the number of visits to each subdomain.


class Solution:

    def subdomainVisits(self, cpdomains):
        """
        :type cpdomains: List[str]
        :rtype: List[str]
        """
        from collections import defaultdict

        visit = defaultdict(int)
        for cp in cpdomains:
            c, p = cp.split()
            ps = p.split(".")
            for pd in [".".join(ps[i:]) for i in range(len(ps))]:
                visit[pd] += int(c)
        return ["{} {}".format(c, d) for d, c in visit.items()]


sol = Solution().subdomainVisits

print(sol(["9001 discuss.leetcode.com"]))
print(sol(["900 google.mail.com", "50 yahoo.com", "1 intel.mail.com", "5 wiki.org"]))

# A website domain like "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. # Now, call a "count-paired domain" to be a count (representing the number of # visits this domain received), followed by a space, followed by the address. # An example of a count-paired domain might be "9001 discuss.leetcode.com". # We are given a list cpdomains of count-paired domains. We would like a list # of count-paired domains, (in the same format as the input, and in any order), # that explicitly counts the number of visits to each subdomain. :type cpdomains: List[str]         :rtype: List[str]