题目意思大概是:从仅有小写字母组成的字符串s中挑选出一个非空子串,将该子串中的每个字母均替换成前一个字母,如'b'换成'a','c'换成'b',以此类推,特别的,'a'要换成'z'。
问经过一次转换之后,字典序最小的字符串s为多少
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
map<char,char>mp;
int k=0;
for(k=0;k<s.size();k++)if(s[k]!='a')break;
mp['a']='a';
for(char i='b';i<='z';i++)mp[i]=i-1;
for(int i=k;i<s.size();i++){
if(s[i]=='a')break;
else s[i]=mp[s[i]];
}
if(k==s.size())s[s.size()-1]='z';
cout<<s<<endl;
return 0;
}