news 2026/6/15 7:28:31

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/6/15 12:38:22

HTR3212 :12路LED精准驱动,赋能智能芯片

在各类电子设备中&#xff0c;LED 显示的 “精准度、灵活性、稳定性” 是决定产品体验的关键 —— 无论是家电面板的清晰指示、智能音响的氛围灯效&#xff0c;还是掌上设备的状态反馈&#xff0c;都需要一款能兼顾多路控制、细腻调节与低功耗的驱动芯片。HTR3212 作为一款专为…

作者头像 李华
网站建设 2026/6/15 15:24:54

大面积LED太阳光模拟器的优势与应用

太阳光模拟器作为科学研究与工业测试中模拟太阳辐射的关键设备&#xff0c;其性能直接影响着各类光响应材料、器件及系统测试的准确性与可靠性。紫创测控luminbox以LED技术驱动的新一代大面积太阳光模拟器&#xff0c;凭借光谱精准、均匀性高、寿命长及智能可调等突破性优势&am…

作者头像 李华
网站建设 2026/6/15 18:45:35

好用的智能招聘会高端服务商

智能招聘会行业的破局之道&#xff1a;聘才猫技术方案解析行业痛点分析在当前智能招聘会领域&#xff0c;存在着诸多技术挑战。首先&#xff0c;精准匹配难题突出&#xff0c;招聘方需求与求职者信息难以高效精准契合&#xff0c;导致大量无效沟通&#xff0c;降低招聘效率。数…

作者头像 李华
网站建设 2026/6/15 12:39:24

从实验室原型到世界级生产力引擎:GPT进化简史

在当今人工智能领域&#xff0c;OpenAI的GPT系列无疑是一颗耀眼的明星。从默默无闻的技术原型&#xff0c;到如今深度融入全球工作流的生产力引擎&#xff0c;GPT的进化史恰如一部AI技术如何重塑世界的微型纪录片。GPT-1&#xff1a;一切的开端故事始于2018年。参数规模仅为1.1…

作者头像 李华
网站建设 2026/6/15 14:12:59

决战光明顶:OpenAI 筑起逻辑的高墙,谷歌推倒行动的围栏

2025 年的冬天&#xff0c;硅谷的空气稀薄得让人窒息。就在 OpenAI CEO Sam Altman 穿着那件标志性的灰色毛衣&#xff0c;在演示台上以胜利者的姿态展示 GPT-5.2 令人惊叹的逻辑统治力&#xff0c;让全球开发者惊呼AGI 曙光已至时&#xff0c;谷歌没有选择沉默。仅仅不到 24 小…

作者头像 李华
网站建设 2026/6/15 19:23:00

解锁AI图像处理新维度:chaiNNer节点化工作流深度解析

解锁AI图像处理新维度&#xff1a;chaiNNer节点化工作流深度解析 【免费下载链接】chaiNNer A node-based image processing GUI aimed at making chaining image processing tasks easy and customizable. Born as an AI upscaling application, chaiNNer has grown into an e…

作者头像 李华