题解 | 字符串变形

字符串变形

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其实也很费时间,还能优化。

全部评论

相关推荐

10-10 16:30
济宁学院 Java
不想做程序员:面试官:蓝桥杯三等奖?你多去两次厕所都能拿二等吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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