牛客题霸--字符串变形

字符串变形

https://www.nowcoder.com/practice/c3120c1c1bc44ad986259c0cf0f0b80e?tpId=117&&tqId=35011&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking

字符串变形

题目链接

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;
    }
};
全部评论
是O(n),虽然是两个循环,但每个单词只会扫两遍,所以是总共次数是2n
1 回复 分享
发布于 2021-04-24 16:28
if (s[i] == ' ') { for (int j = i + 1; j <= p; ++j) ans += trans(s[j]); 这一段如果i=n-1, 则j=n s[j]会数组会溢出吧,大佬解释下,有些不得其解
点赞 回复 分享
发布于 2023-06-15 19:53 上海
大佬解释一下17行的for循环呢,感觉嵌套for循环就直接得到答案了呢
点赞 回复 分享
发布于 2023-04-11 17:54 四川
这时间复杂度好像确实不是线性的。
点赞 回复 分享
发布于 2021-04-23 11:29
这时间复杂度不是O(n) 吧
点赞 回复 分享
发布于 2021-04-04 19:20

相关推荐

点赞 评论 收藏
分享
评论
17
2
分享

创作者周榜

更多
牛客网
牛客企业服务