HWA_10leetcode811子域名访问计数

题目

在这里插入图片描述

解法

思路:空格和点是不同类型字符串的边界
s[:idx]的作用
在这里插入图片描述

class Solution:
    def subdomainVisits(self, cpdomains: List[str]) -> List[str]:
        #使用哈希表记录每个子域名的计数
        map={}
        #遍历数组
        for s in cpdomains:
            #获取当前字符串的长度
            n = len(s)
            #每个字符串都是由数字加域名组成
            #先去获取这个字符串的数字
            #从0开始向后扫描到空格位置
            idx = 0
            #从前向后扫描到空格位置
            while idx < n and s[idx] !=" ":#注意是判断空格不是空字符串
                idx+=1
            #截取出数字来
            cnt = int(s[:idx])
            #从后往前处理域名部分,直到处理完毕
            start = idx+1
            idx = n-1
            #直到处理完毕
            while idx >= start:
                #每个域名由多个子域名组成
                #通过.来截取
                while idx >= start and s[idx] !=".":
                    idx -= 1
                #获取当前子域名
                cur = s[idx+1:]
                #更新这个子域名的计数
                map[cur] = map.get(cur, 0) + cnt
                #idx继续向前移动
                idx -=1
        #从哈希表中构造出答案来
        ans = []
        for key in map:
            #key是域名,map[key] 获取 value
            ans.append(str(map[key]) + " " + key)
        # 返回结果
        return ans
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丰。。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值