哈希表
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()]
这道题目的分享就到这里了~咱们下期再见喽