【leetcode】811. Subdomain Visit Count

16.08%

class Solution(object):
    def subdomainVisits(self, cpdomains):
        """
        :type cpdomains: List[str]
        :rtype: List[str]
        """
        do_dict = {}
        for domain in cpdomains:
            num,string = domain.split(' ')
            num = int(num)
            dot = string.split('.')
            if string in do_dict.keys():
                do_dict[string] += num
            else:
                do_dict[string] = num
            for i in xrange(len(dot)-1):
                do = string.split(dot[i]+'.')[-1]
                if do in do_dict.keys():
                    do_dict[do] += num
                else:
                    do_dict[do] = num
        result = []
        for i in do_dict:
            result.append(str(do_dict[i])+' '+i)
        return result

---------------------------------------

18.30  

note:join()函数,用符号连接字串,和split()函数对应

class Solution(object):
    def subdomainVisits(self, cpdomains):
        """
        :type cpdomains: List[str]
        :rtype: List[str]
        """
        do_dict = {}
        for domain in cpdomains:
            num,string = domain.split(' ')
            num = int(num)
            dot = string.split('.')
            for i in xrange(len(dot)):
                do = '.'.join(dot[i:])
                if do in do_dict.keys():
                    do_dict[do] += num
                else:
                    do_dict[do] = num
        result = []
        for i in do_dict:
            result.append(str(do_dict[i])+' '+i)
        return result

-------------------------------

25.88%

note: 返回构建字串时format的优势

note:  以及collections.Counter()

class Solution(object):
    def subdomainVisits(self, cpdomains):
        """
        :type cpdomains: List[str]
        :rtype: List[str]
        """
        ans = collections.Counter()
        for domain in cpdomains:
            num,string = domain.split(' ')
            num = int(num)
            dot = string.split('.')
            for i in xrange(len(dot)):
                ans['.'.join(dot[i:])] += num
        return ['{} {}'.format(value,key) for key, value in ans.items()]

-----------------------------------

另一种dict.get()函数的重要性

dict.get(key, default=None)

寻找key的value,找不到则返回默认值default

通常使用方法是dict.get(key,0),用来不存在的时候数数

68.02%

class Solution(object):
    def subdomainVisits(self, cpdomains):
        """
        :type cpdomains: List[str]
        :rtype: List[str]
        """
        do_dict = dict()
        for domain in cpdomains:
            num,string = domain.split(' ')
            num = int(num)
            dot = string.split('.')
            for i in xrange(len(dot)):
                do = '.'.join(dot[i:])
                do_dict[do] = do_dict.get(do,0) + num
        return ['{} {}'.format(value,key) for key,value in do_dict.items()]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值