“模拟”题解
2024-05-05 09:12:17
发布于:上海
34阅读
0回复
0点赞
这种题最好不要真的模拟它的解题过程,推理一下即可
反转前半段字符串,与后半段字符串对比,有连续差异的数量多于1,输出NO,否则输出YES
加入团队
代码如下:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string s,front_str,back_str;//re_str;
int n,len;
int main(){
cin>>n;
for(int i=0;i<n;i++){
int dif=0;
cin>>len>>s;
front_str = s.substr(0,len/2);
back_str = s.substr((len+1)/2,len/2);
int l=front_str.size();
reverse(front_str.begin(),front_str.end());//直接reverse即可,如果用手写程序,会TLE(我亲测)
int f=1,c=0;
for(int j=0;j<l;j++){
if(back_str[j]!=front_str[j]&&f){f=0;c++;}
else if(back_str[j]==front_str[j]&&!f){f=1;}
}
cout<<(c>1?"NO":"YES")<<endl;
}return 0;
}
这里空空如也
有帮助,赞一个