美文网首页
2020-03-16 刷题1(字符串)

2020-03-16 刷题1(字符串)

作者: nowherespyfly | 来源:发表于2020-03-17 11:17 被阅读0次

    01.06 字符串压缩

    标签:字符串,内存
    题目其实很简单,用模拟法模拟字符串的压缩过程即可。但是我提交了三次,因为爆内存了。看了评论区才发现一个隐藏的坑:

    c_s = c_s + c + to_string(cnt) // 会给c_s + c + to_string(cnt) 开辟新的内存来存放,如果字符串很长,就会爆内存
    c_s += c + to_string(cnt) // 相当于在c后面append,不会开辟新的内存

    所以,以后能用+= 就不要用= ...+...了吧

    public:
        string compressString(string S) {
            if(S.size() == 0) return S;
            string c_s;
            char c = S[0];
            short cnt = 1;
            for(int i = 1; i <S.size(); i++){
                if(S[i] == c)
                    cnt++;
                else{
                    //不能写成c_s = c_s + c _ to_string(cnt), 会爆内存
                    c_s += c + to_string(cnt);  
                    cnt = 1;
                    c = S[i];
                }
            }
            c_s += c + to_string(cnt);
            if(c_s.size() >= S.size()) return S;
            return c_s;
        }
    };
    

    相关文章

      网友评论

          本文标题:2020-03-16 刷题1(字符串)

          本文链接:https://www.haomeiwen.com/subject/mgnwehtx.html