在字符串转换数字那块纠结了半天,最后发现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")