1. 题目来源
链接:3333. K-优字符串
2. 题目解析
双指针水题。
可发现首尾对应位置均独立,且得分可以任意变换。故仅需统计初始得分 sum
,最小操作数,就是 abs(k-sum)
。
时间复杂度:
O
(
n
)
O(n)
O(n)
空间复杂度:
O
(
1
)
O(1)
O(1)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 2e5+5;
int n, k;
char s[N];
int main() {
int T;
scanf("%d", &T);
for (int C = 1; C <= T; C ++ ) {
scanf("%d%d%s", &n, &k, s + 1);
int sum = 0;
for (int i = 1, j = n; i < j; i ++ , j -- )
if (s[i] != s[j])
sum ++ ;
printf("Case #%d: %d\n", C, abs(k - sum));
}
return 0;
}