题解 | #String Game#

double u

https://ac.nowcoder.com/acm/contest/20103/B

简单题。

上来啥都不干先把所有 w 都展开成 uu,把所有 m 都展开成 nn,然后判断这个新的字符串 qqq 的长度是否等于 nnn,如果是的话输出 qqq 然后 continue 就行了 qwq

如果 qn|q| \not = nq=n 的话,我们就用 disqndis \leftarrow |q| - ndisqn 表示还要减少的字符数,fff 为最终答案,如果 qi=qi+1=uq_i = q_{i + 1} = \tt uqi=qi+1=u 且当时 f|f|f 仍小于 nnn,那么 ff+wf \leftarrow f + \tt wff+wii+1i \leftarrow i + 1ii+1qi=qi+1=nq_i = q_{i + 1} = \tt nqi=qi+1=n 且当时 f|f|f 仍小于 nnn 时同理。

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;
  }
}
全部评论

相关推荐

尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
评论
2
收藏
分享
牛客网
牛客企业服务