-
C - Help Shahhoud
- Gym - 101808C
- 题意:
- 给定两个奇数长度的字符串
- 选定第一个正中间的数字为轴进行转换,
- 每一步可以选的一个奇数长度的子串以中间为轴进行转换
- 问能不能把第一个转换到第二个
- 从前面遍历的中间即可因为最外面的不会背里面的影响是必须要交换的步骤
- 而里面的会随着外面的交换 而交换所以要标记现在的状态才能准确的确定后面的字符的具体位置。
#include<bits/stdc++.h> using namespace std; #define maxn 111500 int t,ans,n,len,flag,f; char a[maxn],b[maxn]; int main() { cin>>t; while(t--) { cin>>a>>b; len=flag=f=ans=0; len=strlen(a); if(strlen(b)!=len||a[len/2]!=b[len/2]) cout<<-1<<endl; else { for(int i=0; i<=len/2; i++) { if(a[i]==b[i]&&a[len-1-i]==b[len-1-i]&&flag==0) continue; else if(a[i]==b[len-1-i]&&a[len-1-i]==b[i]&&flag==1) continue; else if(a[i]==b[len-1-i]&&a[len-1-i]==b[i]&&flag==0) { ans++; flag=1; } else if(a[i]==b[i]&&a[len-1-i]==b[len-1-i]&&flag==1) { ans++; flag=0; } else { f=1; cout<<-1<<endl; break; } } if(!f) cout<<ans<<endl; } } return 0; }
C - Help Shahhoud -字符对称转换
最新推荐文章于 2023-03-14 15:03:50 发布