【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()]

猜你喜欢

转载自blog.csdn.net/u014381464/article/details/80765694