在字符串转换数字那块纠结了半天,最后发现s[i]可以直接运算,为啥呢??
#include <bits/stdc++.h>
using namespace std;
//思路一:暴力遍历;思路二:map;思路三:vector<char>替换
string enc(string s){
for(int i=0;i<s.size();i++){
if(s[i]=='Z')
s[i]='a';
else if(s[i]=='z')
s[i]='A';
else if(s[i]>='a'&&s[i]<'z')
s[i]=(char)(s[i]-'a'+'A'+1);
else if(s[i]>='A'&&s[i]<'Z')
s[i]=(char)(s[i]-'A'+'a'+1);
else if(s[i]=='9')
s[i]='0';
else
s[i]+=1;//为什么字符串可以直接运算?
}
return s;
}
string dec(string s){
for(int i=0;i<s.size();i++){
if(s[i]=='a')
s[i]='Z';
else if(s[i]=='A')
s[i]='z';
else if(s[i]>'a'&&s[i]<='z')
s[i]=(char)(s[i]-'a'+'A'-1);
else if(s[i]>'A'&&s[i]<='Z')
s[i]=(char)(s[i]-'A'+'a'-1);
else if(s[i]=='0')
s[i]='9';
else
s[i]-=1;
}
return s;
}
int main() {
string s1,s2;
cin>>s1>>s2;
cout<<enc(s1)<<endl;
cout<<dec(s2)<<endl;
return 0;
}
// 64 位输出请用 printf("%lld")



京公网安备 11010502036488号