1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() { 4 int n; 5 string s; 6 cin >> n >> s; 7 if (n == 1) { 8 for (int i = 0; i < s.length(); i++) { 9 if (s[i] >= ‘a‘ && s[i] <= ‘z‘) { 10 s[i] -= 32; 11 } 12 } 13 cout << s << endl; 14 } else if (n == 2) { 15 for (int i = 0; i < s.length(); i++) { 16 if (s[i] >= ‘A‘ && s[i] <= ‘Z‘) { 17 s[i] += 32; 18 } 19 } 20 cout << s << endl; 21 } else if (n == 3) { 22 reverse(s.begin(), s.end()); 23 cout << s << endl; 24 } else if (n == 4) { 25 for (int i = 0; i < s.length(); i++) { 26 if (s[i] >= ‘A‘ && s[i] <= ‘Z‘) { 27 s[i] += 32; 28 } else if (s[i] >= ‘a‘ && s[i] <= ‘z‘) { 29 s[i] -= 32; 30 } 31 } 32 cout << s << endl; 33 } else { //n=5的情况,难点 34 for (int i = 0; i < s.length(); i++) { 35 if (s[i] >= ‘A‘ && s[i] <= ‘Z‘) { 36 s[i] += 32; 37 } 38 } 39 string ans = ""; //存储答案 40 for (int i = 0; i < s.length(); i++) { //遍历字符串 41 if (i == 0) { //如果是第一个 42 ans += s[0]; 43 } else if (i != s.length() - 1) { //如果不是最后一个 44 if (s[i] == s[i - 1] + 1) { //如果这一位和前一位连续 45 if (s[i] + 1!= s[i + 1]) { //如果这一位和这一位的后一位不连续 ,重点重点 46 ans += s[i]; 47 } else if (ans[ans.length() - 1] != ‘-‘) { //如果ans上一位不是‘-‘,才加上‘-‘,即不会有--的情况 48 ans += ‘-‘; 49 } else { 50 continue; 51 } 52 } else { //如果这一位和前一位不连续 53 ans += s[i]; //把这一位加入ans 54 } 55 } else { //如果是最后一个 56 ans += s[i]; 57 } 58 } 59 cout << ans << endl; //输出答案 60 } 61 return 0; 62 }
原文:https://www.cnblogs.com/fx1998/p/12650003.html