这是一道经典的贪心题
首先先用列表去存储按长度分割的每一个子串
随后进行k次遍历,每次遍历各个子串的0,1……k - 1索引对应的字符,用字典进行出现次数的累加。因为要修改的总次数最小,依据贪心我们让每次遍历时修改的次数都最小,所以我们找到一次遍历中出现最多的那个字符让它保持不动,修改其余字符,每一次答案增加值就是 n / k - 该字符出现的次数
最后打印出答案ans
python代码:
n,k = map(int, input().split())
s = input()
l = []
t = int(n / k)
for i in range(t):
l.append(s[i * k:i * k + k])
ans = 0
for i in range(k):
dic = {}
for j in l:
dic[j[i]] = dic.get(j[i],0) + 1
ans += t - max(dic.values())
print(ans)

京公网安备 11010502036488号