acgo题库
  • 首页
  • 题库
  • 题单
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 题解

    #include <iostream> #include <cmath> #include <string> #include <cstring> #include <iomanip> #include <algorithm> #include <vector> #include <cstdio> using namespace std; /* 我们把前半段和后半段分开,互相对应(正中间的不用管,因为他对应的是自己 注意回文是相反的,对应时也是相反的 我们只需要将两个串变为一样的,就是回文了 我们只能使用一次反转,所以所有不同点必须全挨在一块,否则要不反转不全,要不将本来就一样的反转了 检查是不是所有不同点全挨在一块就可以了 */ const int N=1,inf=2147483647; int T,n,m,cnt; string s; int main(){ cin>>T; while(T--){ cin>>n; cin>>s; s="2"+s+"2"; m=n/2; cnt=0; for(int i=1;i<=m;i++){ if(s[i]!=s[n-i+1]&&s[i-1]==s[n-i+2])cnt++; } if(cnt>=2)cout<<"NO\n"; else cout<<"YES\n"; } }

    userId_undefined

    小张张五

    AC狗饲养员
    倔强青铜
    48阅读
    0回复
    2点赞
  • 题解求赞(已缩进,可复制,等会儿发讲解)

    userId_undefined

    「欢愉」花火

    秩序白银
    18阅读
    2回复
    3点赞
  • “模拟”题解

    这种题最好不要真的模拟它的解题过程,推理一下即可 反转前半段字符串,与后半段字符串对比,有连续差异的数量多于1,输出NO,否则输出YES 加入团队 代码如下:

    userId_undefined

    沈思邈

    秩序白银
    35阅读
    0回复
    2点赞
  • 题解

    userId_undefined

    法兰西玫瑰

    倔强青铜
    22阅读
    0回复
    0点赞
首页