字符串变形

题目链接

Solution

将字符串按单词反转,并反转大小写。
从后往前扫,如果遇到空格,说明从这个空格的位置到下一个空格之间是一个单词。
然后将单词的每个字母依次取出,取出的过程变化大小写。

Code

class Transform {
public:
    char trans(char ch) {
        if ('a' <= ch && ch <= 'z') return ch - 'a' + 'A';
        else return ch - 'A' + 'a';
    }
    string trans(string s, int n) {
        int p = n - 1;
        string ans;
        for (int i= n - 1; i >= 0; --i) {
            if (s[i] == ' ') {
                for (int j = i + 1; j <= p; ++j) ans += trans(s[j]);
                ans += ' ';
                p = i - 1;
            }
        }
        for (int j = 0; j <= p; ++j) ans += trans(s[j]);
        return ans;
    }
};