#include <cctype> #include <fstream> #include <iterator> class Solution { public: void resverse(string &s,int start,int end) { int left = start; int right = end; while(left < right) { swap(s[left],s[right]); left++; right--; } } string trans(string s, int n) { // write code here resverse(s, 0, n-1); int start = 0; for(int i = 0;i<=n;++i) { if(s[i] == ' ' || s[i] == '\0') { resverse(s, start, i-1); start = i + 1; } } for(int i = 0;i<n;++i) { if(isupper(s[i])) s[i] = tolower(s[i]); else if(islower(s[i])) s[i] = toupper(s[i]); } return s; } };
解题思路:双逆转
先逆转整个字符串,然后再以空格为界,逆转每个单词