美团2021春招实习笔试题——计算关键串字串的串数

标题美团2021春招实习笔试题——计算关键串字串的串数

时间限制: 3000MS 内存限制: 589824KB 题目描述: 定义一个字符串为关键串当且仅当该串中出现次数最多的字符严格超过了字符总数(即串长)的一半。

例如字符串"a",“aab”,“aaab”,“abccc"是关键串,而"ab”,“abc”,“aabb”,"abcc"不是。

给一个长度为n的字符串s,有多少个子串是关键串?

子串:对于一个给定的字符串,串中任意个连续的字符组成的子序列称为该串的子串。

输入描述
第一行是一个正整数n,表示字符串的长度。

第二行是一个长度为n的仅包含小写字母的字符串s。

输出描述
输出一行,表示字符串s中是关键串的子串个数。

n=int(input())
s_lis=list(input())

count=0
def is_key_string(s):
    count_lis=[]
    for item in s:
        count_lis.append(s.count(item))
    if max(count_lis)>len(s)/2:
        return True
    else:
        return False
child_string_lis=[s_lis[i:i + x + 1] for x in range(len(s_lis)) for i in range(len(s_lis) - x)]
#print(child_string_lis)
child_string_lis=list(set(tuple(t)for t in child_string_lis))
for item in child_string_lis:
    if is_key_string(item):
        count+=1
print(count)

    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值