题解 | #简单密码#
简单密码
https://www.nowcoder.com/practice/7960b5038a2142a18e27e4c733855dac
#include <iostream> #include <string> using namespace std; int main() { string input, output; cin >> input; int nums = input.size(); int trans = 'a' - 'A'; for (int i = 0; i < nums; i++) { int tmp = input[i] - 'a'; if ((input[i] >= 'a' && input[i] <= 'z') || (input[i] >= 'A' && input[i] <= 'Z')) { // 处理字母的逻辑 if (tmp >= 0) { // 处理输入是小写字母的逻辑 if(input[i] < 's'){ output += to_string(tmp/3+2); }else if(input[i] == 's'){ output += '7'; }else if(input[i] == 'z'){ output += '9'; }else{ output += to_string((input[i] - 't')/3+8); } } else { // 处理输入是大写字母的逻辑 output += static_cast<char>((input[i] + trans + 1) > 'z' ? 'a' : (input[i] + trans + 1)); } }else{ output += input[i]; } } cout << output << endl; return 0; } // 64 位输出请用 printf("%lld")
主要的逻辑部分分为:
1,判断是否是字母。
2,判断是小写字母还是大写字母。
3,处理数据转换。