Rt.
这是 WA 3 个点的代码:
#include <iostream>
#include <string>
using namespace std;
int n, l, r;
string standard, a;
int maxchange, minchange;
int changenum;
int main() {
cin >> n >> l >> r >> standard;
a = standard;
maxchange = n - l;
minchange = n - r;
for (int i = 0; i < n; i++) {
if (changenum == maxchange) {
cout << a;
return 0;
}
if (a[i] != 'a') {
a[i] = 'a';
changenum++;
}
}
if (changenum >= minchange) {
cout << a;
return 0;
}
for (int i = n - 1; i >= 0; i--) {
if (standard[i] != 'b') {
a[i] = 'b';
changenum++;
}
if (changenum == minchange) {
break;
}
}
cout << a;
return 0;
}
这是 AC 代码:
#include <iostream>
#include <string>
using namespace std;
int n, l, r;
string standard, a;
int maxchange, minchange;
int changenum;
int main() {
cin >> n >> l >> r >> standard;
a = standard;
maxchange = n - l;
minchange = n - r;
for (int i = 0; i < n; i++) {
if (changenum == maxchange) {
cout << a;
return 0;
}
if (a[i] != 'a') {
a[i] = 'a';
changenum++;
}
}
if (changenum >= minchange) {
cout << a;
return 0;
}
for (int i = n - 1; i >= 0; i--) {
if (standard[i] == 'a') {
a[i] = 'b';
changenum++;
}
if (changenum == minchange) {
break;
}
}
cout << a;
return 0;
}
可以看到仅仅把第 2 个循环里 if 的条件从 standard[i] != 'b' 改成了 standard[i] == 'a',但是为什么除了字符 a 以外的都不用改呢,求大佬指教 UwU