class Solution { public: string trans(string s, int n) { if (n == 0) return s; string res; for (int i = 0; i < n; i++) { //大小写转换 fast-template if (s[i] <= 'Z' && s[i] >= 'A') res += s[i] - 'A' + 'a'; else if (s[i] >= 'a' && s[i] <= 'z') res += s[i] - 'a' + 'A'; else //空格直接复制 res += s[i]; } //翻转整个字符串 reverse(res.begin(), res.end()); for (int i = 0; i < n; i++) { int j = i; //以空格为界,二次翻转 while (j < n && res[j] != ' ') j++; reverse(res.begin() + i, res.begin() + j); i = j; } return res; } }; /*class Solution { public: string trans(string s, int n) { string p="",q=""; for(int j=0;j<n;j++) { if(s[j]==' ') { p=" "+q+p; q=""; continue; } if(s[j]>='a'&&s[j]<='z') { s[j]+='A'-'a'; } else if(s[j]>='A'&&s[j]<='Z') { s[j]+='a'-'A'; } q+=s[j]; if(j==(n-1)) { p=q+p; } } return p; } };*/