Codeforces Round 853 (Div. 2)B. Serval and Inversion Magic

  • 3

  • 4

  • 1001

  • 5

  • 10010

  • 7

  • 0111011

输出

  • Yes

  • Yes

  • No

题解思路

使用双指针和贪心 遍历整个数组,找到与回文字符串不同的字符 进行反码 ,并进行标记,进入反码的循环,并且直接结束外循环。

献上代码

  1. #include <bits/stdc++.h>

  1. #include <algorithm>

  1. using namespace std;

  1. string a;

  1. bool pri(int n) {

  1. for (int i = 0, j = n-1; i < j; i++, j--) {

  1. if (a[i] != a[j]) return false;

  1. }

  1. return true;

  1. }

  1. int main() {

  1. int t, n, i, j;

  1. cin >> t;

  1. while (t--) {

  1. bool g = true;

  1. cin >> n;

  1. cin >> a;

  1. for (i = 0, j = n - 1; i < j; i++, j--) {

  1. if (a[i] != a[j] && g) {

  1. g = false;

  1. for (i, j; i < j; i++, j--) {

  1. a[i] = '1' - a[i]+'0';

  1. }

  1. }

  1. }

  1. if (pri(n))cout << "Yes" << endl;

  1. else cout << "No" << endl;

  1. }

  1. return 0;

  1. }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值