题解 | 字符串变形

字符串变形

https://www.nowcoder.com/practice/c3120c1c1bc44ad986259c0cf0f0b80e

class Solution {
public:
    string trans(string s, int n) {

        for(int i=0; i<s.length(); i++){
            if(s[i]>='a' && s[i]<='z')
                s[i] = s[i] - 'a' + 'A';
            else if(s[i]>='A' && s[i]<='Z')
                s[i] = s[i] - 'A' + 'a';
        }

        stack<string> st;
        string curr = "";
        for(int i=0; i<s.length(); i++){
            if(s[i]!=' ')
                curr += s[i];
            else{
                st.push(curr);
                curr = "";
            }
        }
        st.push(curr);

        string res;
        while(!st.empty()){
            curr = st.top();
            st.pop();
            res += curr + ' ';
        }
        res.pop_back(); // 去掉多余的一个空格

        return res;
    }
};

这题踩了一个大坑,就是超时问题。

limit=1s,但是最后一个用例我这里显示运行了1001ms。

将res = res + curr + ' '改为res += curr + ' '即可;

另外一个string拼接也改为这样,就能省很多时间。拼接太费时间了,stack的push和pop其实也很费时间,还能优化。

全部评论

相关推荐

牛客44664404...:把个人技能删了搞这么长干什么!还有你面试要先针对那个公司的技术栈专门去准备,别一问三不知,他需要你会他们公司对口的技术,写这么多不对口没有用
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务