【leetcode】子域名访问计数

哈希表

class Solution(object):
    def subdomainVisits(self, cpdomains):
        """
        :type cpdomains: List[str]
        :rtype: List[str]
        """
        
        hash_map = {} # (key,value) = (times, dom)
        for cpdomain in cpdomains: # "9001 discuss.leetcode.com"
            s = cpdomain.split(' ') # ['9001', 'discuss.leetcode.com']
            times = int(s[0]) # 9001
            domain = s[1].split('.')[::-1] # ['com', 'leetcode', 'discuss']
            
            dom = ""
            for i in range(0, len(domain)):
                dom = domain[i] + dom # "com"
                if hash_map.has_key(dom):
                    # 哈希表存在dom,出现次数累加
                    hash_map[dom] += times
                else:
                    # 哈希表不存在dom,添加出现次数
                    hash_map[dom] = times
                dom = "." + dom # ".com"
    
        ans = [str(item_times) + " " + key_dom for key_dom, item_times in hash_map.items()]
        return ans

更加简洁代码体现在Note(1)的切片和Note(2)部分的列表推导式+format/f字符串

参考题解:https://leetcode.cn/problems/subdomain-visit-count/solutions/1870107/by-meteordream-wvtb/

class Solution(object):
    def subdomainVisits(self, cpdomains):
        ans = collections.Counter()
        for domain in cpdomains:
            count, domain = domain.split()
            count = int(count)
            frags = domain.split('.')
            for i in xrange(len(frags)):
                ans[".".join(frags[i:])] += count # Note(1)的切片
        # Note(2)的列表推导式 + format/f字符串
		return [f"{ct} {dom}" for dom, ct in ans.items()]
        # return ["{} {}".format(ct, dom) for dom, ct in ans.items()]

这道题目的分享就到这里了~咱们下期再见喽

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值