首页 > 其他 > 详细

443. 压缩字符串 中等 双指针

时间:2021-08-21 20:13:17      阅读:19      评论:0      收藏:0      [点我收藏+]

2021.08.21 签到题

技术分享图片

个人思路

这道题中等难度,一开始没看到要修改原数组,以为只要返回个长度即可,在原空间修改,很自然的想到用双指针(读写指针),一个处理在读的数据位置,一个处理该写入的数据位置,代码如下:

    int compress(vector<char>& chars) {
        int len = chars.size();
        // 用来表示用到的原空间数组的下标
        int index = 1;
        // 用来表示重复出现字符的次数
        int temp=1;
        for(int i=1;i<len;i++){
            if(chars[i]==chars[i-1]){
                temp++;
            }else{
                if(temp!=1){
                    string num = to_string(temp);
                    for(int j=0;j<num.size();j++){
                        chars[index++]=num[j];
                    }
                }
                temp=1;
                chars[index++]=chars[i];
            }
        }
        if(temp!=1){
            string num = to_string(temp);
            for(int j=0;j<num.size();j++){
                chars[index++]=num[j];
            }
        }
        chars.resize(index);
        return index;
    }

代码写的有点冗长,懒得优化了。

443. 压缩字符串 中等 双指针

原文:https://www.cnblogs.com/Beyond-189/p/15169989.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!