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

【压缩字符串算法解析与实现】

压缩的要求是将连续相同字符替换为字符 + 数字形式,例如 “AAABCCDDDD” 变为 “A3BC2D4”。

问题描述与分析

给定一个字符串,我们需要判断是否可以进行压缩,并且只在压缩后的字符串长度比原字符串长度更短时进行压缩。如果字符串可以压缩,则输出压缩后的字符串,否则输出 “NO”。

解决方案

算法思路

通过遍历字符串的每个字符来实现该算法,需要维护一个计数器,用于统计连续相同字符的个数。当遇到一个不同的字符时,我们将之前的字符及其计数器添加到压缩后的字符串中,并将计数器重置为 1。

实现步骤

  1. 遍历字符串的每个字符,并初始化一个计数器为 1。
  2. 对于每个字符,如果当前字符与下一个字符相同,则增加计数器;如果不同,则将当前字符及其计数器添加到压缩后的字符串中,并将计数器重置为 1。
  3. 判断压缩后的字符串是否比原字符串短,如果是,则输出压缩后的字符串;否则输出 “NO”。

代码实现

#include <iostream>
#include <string>int main() {std::string s;std::cin >> s;std::string compressedString;int count = 1;for (int i = 0; i < s.length(); ++i) {if (i + 1 < s.length() && s[i] == s[i + 1]) {// 如果当前字符与下一个字符相同,则增加计数器count++;} else {// 如果当前字符与下一个字符不同,则将当前字符及其计数器添加到压缩后的字符串中compressedString += s[i];if (count > 1) {compressedString += std::to_string(count); // 将计数器转换为字符串添加到压缩后的字符串中}count = 1; // 重置计数器}}// 判断压缩后的字符串是否比原字符串短if (compressedString.length() < s.length()) {std::cout << compressedString << std::endl;} else {std::cout << "NO" << std::endl;}return 0;
}
http://www.lryc.cn/news/330133.html

相关文章:

  • test02
  • K8S Pod 水平自动扩缩容 HPA
  • Spring日志框架
  • (九)关系数据理论
  • 【经验分享】Ubuntu下如何解决问题arm-linux-gcc:未找到命令
  • 【算法刷题day10】Leetcode:232.用栈实现队列、225. 用队列实现栈
  • sql注入详解
  • [蓝桥杯 2022 省 B] 李白打酒加强版
  • 【检索增强】Retrieval-Augmented Generation for Large Language Models:A Survey
  • EVM Layer2 主流解决方案
  • go中结构体标签:omitempty、json꞉“name“、 gorm꞉“column꞉name“、yaml꞉“name“
  • 七月论文审稿GPT第4版:通过paper-review数据集微调Mixtral-8x7b,对GPT4胜率超过80%
  • 【QT学习】1.qt初识,创建qt工程,使用按钮,第一个交互按钮
  • JavaScript_与html结合方式
  • WPF —— 动画
  • 前端二维码生成工具小程序:构建营销神器的技术解析
  • 光伏发电量预测(Python代码,CNN结合LSTM,TensorFlow框架)
  • GPT带我学-设计模式11-组合模式
  • Centos7 elasticsearch-7.7.0 集群搭建,启用x-pack验证 Kibana7.4用户管理
  • [CSS]中子元素在父元素中居中
  • 电脑突然死机怎么办?
  • Kyligence 正式加入华为“同舟共济”行动计划,成为行业数智化“联盟级伙伴”
  • 大模型推理框架——text-generation-inference
  • 电梯四种事故检测YOLOV8
  • 构建docker环境下的thunder迅雷插件
  • Django开发复盘
  • 第6章 数据存储操作
  • 接口自动化框架搭建(八):pytest+allure+jenkins接入
  • linux监控命令全
  • 【GenAI】使用GenAI堆栈构建视频分析和转录字幕聊天机器人