思路:
凯撒密码。收集字符串 s 里出现的字母,用 set 默认排序,得到 abcd......使字母偏移一位即可,a->b, b->c, c->d, ......, z->a
再遍历字符串 s,替换 s 的字母即可
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAX=1e9+7;
int t,n,m;
void solve(){
string s;
cin>>s;
set<char> se;
for(int i=0;i<s.size();i++)
se.insert(s[i]);
if(se.size()<2)
{
cout<<-1;
return;
}
map<char,char> mp;
for(auto it=se.begin();it!=se.end();it++)
{
auto p=it;
if((++p)!=se.end())mp[*it]=*(p);
else mp[*it]=*se.begin();
}
string t;
for(int i=0;i<s.size();i++)
t+=mp[s[i]];
cout<<t<<endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
t=1;
//cin>>t;
while(t--){
solve();
}
return 0;
}

京公网安备 11010502036488号