news 2026/5/8 18:03:37

C++学习记录-旧题新做-字符串压缩

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++学习记录-旧题新做-字符串压缩

旧题记录帖:https://blog.csdn.net/chamao_/article/details/143305269?fromshare=blogdetail&sharetype=blogdetail&sharerId=143305269&sharerefer=PC&sharesource=chamao_&sharefrom=from_link

c++解法:

class Solution { public: string compressString(string S) { if(S.empty()) return S; std::string s; s.reserve(S.length() * 2); // .reserve()能提前预留空间 int index = 0; int i = 0; while(i < S.length()) { char currentChar = S[i]; int count = 0; while(i < S.length() && S[i] == currentChar) { count++; i++; } // 追加字符和数字 s += currentChar; s += std::to_string(count); } if(s.length() >= S.length()) { return S; } return s; } };

1. 为什么用.reserve() 而不是 .resize()?

  • reserve(n):只是提前分配“容量”,不改变字符串长度

  • resize(n):改变字符串的“长度”,并用'\0'填充新增字符

在我的压缩字符串构造过程中,我并不希望字符串一开始就变长,所以要用reserve

2. std::to_string是什么?

to_string()用来把“数字类型”转换为std::string

例如:

std::string s = std::to_string(123); // "123"

std::string s = std::to_string(123); // "123"

这是C++11新增的功能。


3.to_string支持哪些类型?

它支持基本数字类型

类型示例
intstd::to_string(10)
longstd::to_string(123L)
long longstd::to_string(123LL)
unsignedstd::to_string(10u)
unsigned longstd::to_string(10ul)
unsigned long longstd::to_string(10ull)
floatstd::to_string(3.14f)
doublestd::to_string(3.14)
long doublestd::to_string(3.14L)

📌注意:不支持 char 和 bool!
如果你写:

std::to_string('A');

std::to_string('A');

它会把'A'当做数字 65 转换成"65"


4. 为什么 C++ 推荐用to_string而不是sprintf

因为它更安全、更直观:

✔ 不需要格式化字符串

sprintf写错一个%d%s会崩溃。

to_string不会。

✔ 无需关心缓冲区大小

sprintf必须让你自己保证 buffer 足够大。

to_string会自动管理内存,完全不会溢出。

对比:

char buf[20]; sprintf(buf, "%d", num); // 危险,需检查大小

char buf[20]; sprintf(buf, "%d", num); // 危险,需检查大小

C++ 写法:

std::string s = std::to_string(num);

std::string s = std::to_string(num);

一行解决。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 15:56:55

2025如何选择适合企业需求的舆情监测服务商?5大维度评估TOP服务商

当企业面对信息爆炸的时代&#xff0c;一条短视频可能在30分钟内重创上市公司市值&#xff0c;一条微博可能让地方机构的招商努力归零。在众多舆情服务商中做出正确选择&#xff0c;已经成为现代企业风险管理的基本功。01 行业变革与选择挑战2025年的舆情监测行业已从被动告警升…

作者头像 李华
网站建设 2026/5/6 7:14:43

RTSP模拟开发:轻松搭建本地摄像头推流

在开发中我们可能会涉及到连接摄像头的开发&#xff0c;但是在本地环境我们没有相关的连接时&#xff0c;就需要本地进行模拟。 ✅ 推荐方案&#xff1a;使用 RTSP Simple Server&#xff08;RSS&#xff09; 这是一个用 Go 写的超轻量、零依赖、单文件 RTSP 服务器&#xff…

作者头像 李华
网站建设 2026/5/5 23:48:44

Pock:重新定义MacBook触控栏的终极解决方案

Pock&#xff1a;重新定义MacBook触控栏的终极解决方案 【免费下载链接】pock Widgets manager for MacBook Touch Bar 项目地址: https://gitcode.com/gh_mirrors/po/pock 你是否曾经觉得MacBook的Touch Bar功能有限&#xff0c;无法充分发挥其潜力&#xff1f;Pock作为…

作者头像 李华
网站建设 2026/5/6 7:15:28

面对市场上的RPA软件如何选择?

选择RPA数据采集工具时&#xff0c;建议您根据具体业务场景、对稳定性和安全性的要求、以及操作便捷性等因素进行综合考量。没有“最好”的工具&#xff0c;只有最适合您需求的方案。如果追求极致易用和电商适配&#xff0c;影刀RPA是首选&#xff1b;金融领域看重安全稳定&…

作者头像 李华
网站建设 2026/5/8 0:33:09

Swin Transformer重塑目标检测:从效率瓶颈到性能突破的实战指南

Swin Transformer重塑目标检测&#xff1a;从效率瓶颈到性能突破的实战指南 【免费下载链接】detr End-to-End Object Detection with Transformers 项目地址: https://gitcode.com/gh_mirrors/de/detr 在计算机视觉领域&#xff0c;目标检测技术正面临前所未有的效率挑…

作者头像 李华
网站建设 2026/5/6 18:12:13

【OpenHarmony】OpenHarmony ETS Utils实现

OpenHarmony ETS Utils 模块 1. 模块概述 源码&#xff1a;https://gitee.com/openharmony/commonlibrary_ets_utils 1.1 功能与目标 1.1.1 主要功能 OpenHarmony ETS Utils 是一个综合性的工具库&#xff0c;为OpenHarmony系统提供核心的JavaScript/TypeScript运行时工具…

作者头像 李华