题解 | #String Game#
double u
https://ac.nowcoder.com/acm/contest/20103/B
简单题。
上来啥都不干先把所有 w
都展开成 uu
,把所有 m
都展开成 nn
,然后判断这个新的字符串 q 的长度是否等于 n,如果是的话输出 q 然后 continue
就行了 qwq
如果 ∣q∣=n 的话,我们就用 dis←∣q∣−n 表示还要减少的字符数,f 为最终答案,如果 qi=qi+1=u 且当时 ∣f∣ 仍小于 n,那么 f←f+w,i←i+1,qi=qi+1=n 且当时 ∣f∣ 仍小于 n 时同理。
Code:
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
string s;
cin >> s;
string q = "";
for (int i = 0; i < s.size(); ++i) {
if (s[i] == 'w') {
q += "uu";
} else if (s[i] == 'm') {
q += "nn";
} else {
q += s[i];
}
}
if (q.size() == n) {
cout << q << endl;
continue;
}
int dis = q.size() - n;
string f = "";
for (int i = 0; i < q.size(); ++i) {
if (q[i] == 'u' && q[i + 1] == 'u' && dis > 0) {
f += 'w';
dis--;
++i;
} else if (q[i] == 'n' && q[i + 1] == 'n' && dis > 0) {
f += 'm';
dis--;
++i;
} else {
f += q[i];
}
}
cout << f << endl;
}
}