Python----实现字符串固定长度频率统计

实现字符串固定长度频率统计

在某家公司的面试中,有这样一个问题:

给定字符串和长度,输出出现次数高的字符串和次数字典。
例如:
	输入:'Today is a good day!' , 2
	输出:{'od': 2, 'da': 2, 'ay': 2}

这样的问题给当时的我产生了很大的冲击,当时就失去了斗志,在此之后的一个月里,一度怀疑自己大学白学了。后来想想,自己刚毕业,还年轻,怎能轻易放弃!
今天,在做LeetCode题时突发奇想,最终实现该问题,以此纪念。

import re


def count_max_str(content: str, num: int) -> dict:
    lis = []
    dic, dic2 = {}, {}
    # 正则匹配所有非字母数字字符替换为空,直接去空格,省步骤
    content = re.sub("\W*", '', content)

    for x in range(len(content)):
        if x + num > len(content):
            break
        else:
        	# 切分字符
            lis.append(content[x:x + num])
    
	# 生成字符和数量的字典
    for y in lis:
        dic[y] = lis.count(y)
    
	# 取字典中数量最多的
    for key, value in dic.items():
        if (value == max(dic.values())):
            dic2[key] = value

    return dic2


if __name__ == '__main__':
    a = 'Today is a good day!'
    b = 2
    print(count_max_str(a, b))
# 生成结果
{'od': 2, 'da': 2, 'ay': 2}

因为这道题,让我从实习 4K 到 2K 的转变,现在想想,也许这就是所谓的命运啊!
但是人生怎能轻言放弃呢?赚的少也要活下去,加油!
无论何时都要多思考,积累知识,多写多练,终会有所收获。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值