diff options
Diffstat (limited to 'subdomain_visit_count.py')
-rw-r--r-- | subdomain_visit_count.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/subdomain_visit_count.py b/subdomain_visit_count.py new file mode 100644 index 0000000..ebf383d --- /dev/null +++ b/subdomain_visit_count.py @@ -0,0 +1,45 @@ +# 811. Subdomain Visit Count +from collections import Counter + +""" +a website domain "discuss.leetcode.com" consists of various subdomains. at +the level, we have "com" at the next level, we have "leetcode.com", and the +lest level, "discuss.leetcode.com". when we visit a domain like the above, 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 paird +domains 'cpdomains' return an array of the count pared domains of each +subdomain in the input. you may return the answer in any order. +""" + + +class Solution(object): + def subdomainVisits(self, cpdomains): + """ + :type cpdomains: List[str] + :rtype: List[str] + """ + cnt = Counter() + for cp in cpdomains: + n, s = cp.split() + cnt[s] += int(n) + for i in range(len(s)): + if s[i] == ".": + cnt[s[i + 1 :]] += int(n) + return ["%d %s" % (cnt[k], k) for k in cnt] + + +if __name__ == "__main__": + obj = Solution() + print(obj.subdomainVisits(cpdomains=["9001 discuss.leetcode.com"])) + print( + obj.subdomainVisits( + cpdomains=[ + "900 google.mail.com", + "50 yahoo.com", + "1 intel.mail.com", + "5 wiki.org", + ] + ) + ) |