当前位置: 首页 > article >正文

压缩字符串II

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

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

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

  • 如果这一组长度为 1 ,则将字符追加到 s 中。
  • 否则,需要向 s 追加字符,后跟这一组的长度。

压缩后得到的字符串 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() && j < chars.size();){
            int count = 0;
            while(j < chars.size() && chars[j] == chars[i]){
                j++;
                count++;
            }
            if(count > 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> chars = {'a','a','b','b','c','c','c'};
    Solution s2;
    cout<<s2.compress(chars)<<endl;
    return 0;
}


http://www.kler.cn/news/149591.html

相关文章:

  • Maven 介绍
  • C语言基础程序设计题
  • 爬虫如何确定HTTP代理IP是否符合自己业务需求?
  • Android 13.0 app进程保活白名单功能实现
  • Python语言学习笔记之二(基础语法)
  • leetcode 611. 有效三角形的个数(优质解法)
  • 去水印软件有哪些?亲测四款好用去水印神器
  • redis使用
  • “rhdf5filters.so’ not found when install ‘glmGamPoi‘ package
  • AUTOSAR系统服务篇 - BswM
  • RPG项目01_UI登录
  • 如何在 Vim 中剪切、复制和粘贴
  • leetcode 打家劫舍
  • [栈溢出+参数跟踪] [ZJCTF 2019]Login
  • 【LeetCode】挑战100天 Day13(热题+面试经典150题)
  • Excel导入组件的封装以及使用页面点击弹出该弹框
  • Nature子刊最新研究:Hi-C宏基因组揭示土壤-噬菌体-宿主相互作用
  • Django请求生命周期流程
  • Android WiFi的断开分析
  • ChatGPT到底是如何运作?
  • 水淹七军(递归,又是递归)
  • 【Unity记录】EDM4U(External Dependency Manager)使用说明
  • temu反洗钱协议在哪里签署
  • HashMap源码解析
  • 批量采集淘宝商品数据,有哪些方式可以实现?
  • 【Spark源码分析】事件总线机制分析
  • Python超级详细的变量命名规则
  • uniApp应用软件在运行时,未见向用户告知权限申请的目的,向用户索取(存储、相机、电话)等权限,不符合华为应用市场审核标准。
  • PostgreSQL数据库中的后台进程
  • 什么是美颜sdk?集成第三方美颜sdk的步骤