本文介绍: 力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。返回 6 ,输入数组的前 6 个字符应该是:[“a“,”2″,”b“,”2″,”c“,”3″]”aa” 被 “a2″ 替代。”bb” 被 “b2″ 替代。”ccc” 被 “c3″ 替代。你必须设计实现一个使用常量额外空间算法解决问题。// 然后 用 j 来统计与前面的比较是否相同,然后循环。// 用一个count 来进行不断的清空需要注意的是,如果组长度为。,返回该数组的新长度

null备战技术面试力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/stringcompression/description/

给你一个字符数组 chars ,请使用下述算法压缩:

一个字符串 s 开始。对于 chars 中的每组 连续重复字符 :

压缩后得到的字符串 s 应该直接返回 ,需要转储到字符数组 chars 中。需要注意的是,如果组长度为 10 或 10 以上,则在 chars 数组中会被拆分为多个字符

请在 修改输入数组后 ,返回该数组的新长度

你必须设计实现一个使用常量额外空间算法解决问题

示例 1:

输入chars = ["a","a","b","b","c","c","c"]
输出返回 6 ,输入数组的前 6 个字符应该是:["a","2","b","2","c","3"]
解释:"aa" 被 "a2" 替代。"bb" 被 "b2" 替代。"ccc" 被 "c3" 替代。

// 重点思路:

// 用一个count 来进行不断的清空

// 然后 用 j 来统计与前面的比较是否相同,然后循环


#include "iostream"
#include<bits/stdc++.h>

using namespace std;

class Solution {
public:
    int compress(vector<char>& chars) {
        for(int i =  0 , j = 0; i < chars.size() &amp;&amp; j < chars.size();){
            int count = 0;
            while(j < chars.size() &amp;&amp; chars[j] == chars[i]){
                j++;
                count++;
            }
            if(count &gt; 1) {
                ans += chars[i] + to_string(count);
                i = j;
            }
            else {
                ans += chars[i];
                i++;
            }

        }
        for(int i = 0 ; i < ans.size() ; i++){
            chars[i] = ans[i];
        }
        return ans.size();
    }
private:
    string ans;
};


int main() {


    vector<char&gt; chars = {'a','a','b','b','c','c','c'};
    Solution s2;
    cout<<s2.compress(chars)<<endl;
    return 0;
}

原文地址:https://blog.csdn.net/IRON_MAN_LEVEL1/article/details/134693255

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_9819.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注