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

Leetcode每日刷题之面试题01.06字符串压缩(C++)

1.题目解析

本题的目的是遍历一个字符串,将重复的字符串以该字符+出现次数进行压缩,最终返回压缩后的字符串即可

题目来源:面试题01.06.字符串压缩

 

2.算法原理

我们从左往右遍历字符串,用 ch 记录当前要压缩的字符,cnt 记录 ch 出现的次数,如果当前枚举到的字符 s[i] 等于 ch ,我们就更新 cnt 的计数,即 cnt = cnt + 1,否则我们按题目要求将 ch 以及 cnt 更新到答案字符串 ans 里,即 ans = ans + ch + cnt,完成对 ch 字符的压缩

随后更新 ch 为 s[i],cnt 为 1,表示将压缩的字符更改为 s[i]

在遍历结束之后,我们就得到了压缩后的字符串 ans,并将其长度与原串长度进行比较。如果长度没有变短,则返回原串,否则返回压缩后的字符串

3.代码展示

class Solution {
public:string compressString(string S) {if ((int)S.length() == 0) return S; // 空串处理string ans = "";int cnt = 1;char ch = S[0];for (int i = 1; i < (int)S.length(); ++i){if (ch == S[i]) cnt++;else{ans += ch + to_string(cnt); // 注意 cnt 要转为字符串ch = S[i];cnt = 1;}}ans += ch + to_string(cnt);return ans.length() >= S.length() ? S : ans;}
};

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 第一次运行Neo4J
  • CANoe.DiVa的应用——生成TP层测试用例过程流程详解(二)
  • Python -- GUI图形界面编程—GUI编程实例 博主也在持续学习中[ 持续更新中!!! 欢迎白嫖 也求粉啊啊啊~ ]
  • 数据结构-返回n年后牛的数量
  • MATLAB遗传算法求解考虑碳排放的逆向物流快递产品回收处理中心选址问题实例代码
  • 【Web】NepCTF 2024题解
  • Java面试题·解释题
  • 笔记本电脑数据恢复的最佳解决方案 - 100%快速和安全
  • 深度全面讲解fs.readFileSync:Node.js中的同步文件读取
  • 准备pyannote-audio开发环境
  • 49、Python之模块和包:模块导入对命名空间的影响
  • MessageDialog 是 Qt Quick Controls 中的一个组件,用于显示消息对话框
  • 解锁C#性能监控:内置性能计数器全解析
  • 结构型模式之代理模式
  • Python习题 148:返回每个单词长度的列表
  • [PHP内核探索]PHP中的哈希表
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • 11111111
  • Apache Spark Streaming 使用实例
  • Docker容器管理
  • E-HPC支持多队列管理和自动伸缩
  • Facebook AccountKit 接入的坑点
  • Hibernate最全面试题
  • Java反射-动态类加载和重新加载
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Otto开发初探——微服务依赖管理新利器
  • Python学习之路13-记分
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • storm drpc实例
  • vagrant 添加本地 box 安装 laravel homestead
  • 关于Flux,Vuex,Redux的思考
  • 计算机在识别图像时“看到”了什么?
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 全栈开发——Linux
  • 事件委托的小应用
  • 我的zsh配置, 2019最新方案
  • 项目实战-Api的解决方案
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​2020 年大前端技术趋势解读
  • (5)STL算法之复制
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (windows2012共享文件夹和防火墙设置
  • (二)正点原子I.MX6ULL u-boot移植
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (转)创业的注意事项
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .vimrc 配置项
  • @JsonFormat与@DateTimeFormat注解的使用
  • @Transactional事务注解内含乾坤?