#include <algorithm> #include <cctype> #include <string> #include <sstream> using namespace std; class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param n int整型 * @return string字符串 */ string trans(string s, int n) { // write code here // 这个是所有字符都反转; reverse(s.begin(), s.end()); // 针对单个字符串进行反转,并修改大小写 for(int i=0; i<=n; ++i) { // 遇到非空格 if(s[i]!=' ') { if(s.find_first_of(' ',i)!=string::npos) { int index = s.find_first_of(' ',i); int l=i, r=index-1; while(l<=r) { if(islower(s[l])) s[l] = toupper(s[l]); else s[l] = tolower(s[l]); //对于长度为奇数的字符串,中间字符为l==r,此时如果不加 l!=r 的判断,则该中间字符大小写不变; if(l!=r) { if(islower(s[r])) s[r] = toupper(s[r]); else s[r] = tolower(s[r]); } // 调换 swap(s[l],s[r]); ++l; --r; } i=index; } else { int l=i, r=n-1; while(l<=r) { if(islower(s[l])) s[l] = toupper(s[l]); else s[l] = tolower(s[l]); if(l!=r) { if(islower(s[r])) s[r] = toupper(s[r]); else s[r] = tolower(s[r]); } // 调换 swap(s[l],s[r]); ++l; --r; } break; } } } return s; // 利用字符串输入流的方法,对空格处理比较麻烦,算了 // string str = ""; // istringstream iss(s); // string t_str; // while(iss>>t_str) // str = t_str + " " + str ; // // 删除最后一个空格 // str.erase(str.end()-1); // return str; } };