NC213390. 游戏机本当下手
描述
输入描述
第一行两个正整数 和 ,分别代表字符串的长度、和妹红按下按钮的次数。
第二行为一个仅由字符“0”和“1”组成的字符串。
输出描述
妹红至少按 次就能按出来的子串的数量。
示例1
输入:
6 2 001100
输出:
8
说明:
示例2
输入:
3 1 110
输出:
4
说明:
pypy3 解法, 执行用时: 183ms, 内存消耗: 36560K, 提交时间: 2022-09-25 19:32:42
n,k=map(int,input().split()) ssa=input() cn=[] c=1 sn=1 for i in range(len(ssa)-1): if ssa[i]==ssa[i+1]: c +=1 else: cn.append(c) c=1 sn +=c cn.append(c) if k==1: print(sn) else: sn=0 for i in range(len(cn)-k+1): sn +=cn[i]*cn[i+k-1] print(sn)
Python3 解法, 执行用时: 404ms, 内存消耗: 15152K, 提交时间: 2022-07-27 21:01:38
n, k = map(int, input().split()) str1 = input() cnt = [1] for i in range(1,n): if str1[i] == str1[i-1]: cnt[-1] += 1 else: cnt.append(1) if k == 1: print(sum(map(lambda x:int(x*(x+1)/2), cnt))) else: print(sum(map(lambda x:x[0]*x[1], zip(cnt, cnt[k-1:]))))