一道题目,原位置替换字符串
对于字符串增加类型:
先算出新的长度,然后一个一个赋值:

#include <iostream> #include <string> void change_word(char *a, int len) { if (a == NULL) { return; } int count = 0; for (int i=0; i<len; i++) { if (a[i] == ' ') { count+=2; } } int newi = len + count - 1; for (int i=len-1; i>=0; i--) { if (a[i] != ' ') { a[newi--] = a[i]; } else { a[newi--] = '3'; a[newi--] = '2'; a[newi--] = '1'; } } return; } int main() { std::cout << "Hello, World!" << std::endl; char ch[100]; strncpy(ch, "hi hi hihihi hi", 16); std::cout << ch << std::endl; change_word(ch, 16); std::cout << ch << std::endl; return 0; }
对于字符串长度减少,直接替换。(略)
对于重复字符只留一个,下面的解法,直接位置放置:

#include <iostream> #include <string> void change_word(char *a) { if (a == NULL) { return; } int newi = 0; int i = 0; while (a[i] != '\0') { if (i==0 || a[i] != a[i-1]) { if (newi != i) { a[newi] = a[i]; } newi++; } i++; } a[newi] = '\0'; return; } int main() { std::cout << "Hello, World!" << std::endl; char ch[100]; strncpy(ch, "hi hhi hiiiiihhhihi hi", 23); std::cout << ch << std::endl; change_word(ch); std::cout << ch << std::endl; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!