news 2026/8/13 23:15:38

【C++经典例题】反转字符串中单词的字符顺序:两种实现方法详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【C++经典例题】反转字符串中单词的字符顺序:两种实现方法详解

在 C++ 中,字符串处理是常见的面试与算法练习题。本题目标是:反转字符串中每个单词的字符顺序,但保持单词顺序不变

示例:

输入: "Hello World" 输出: "olleH dlroW"

也就是说:

Hello → olleH World → dlroW

下面介绍两种经典实现方法


一、方法一:使用字符串流(stringstream)

利用 将字符串按单词拆分,然后逐个反转。

思路

  1. 使用stringstream按空格分割单词
  2. 使用reverse()反转单词
  3. 拼接结果字符串

代码实现

#include<iostream>#include<sstream>#include<algorithm>usingnamespacestd;stringreverseWords(string s){stringstreamss(s);string word;string result;while(ss>>word){reverse(word.begin(),word.end());result+=word+" ";}result.pop_back();returnresult;}intmain(){string str="Hello World";cout<<reverseWords(str)<<endl;return0;}

输出:

olleH dlroW

时间复杂度

O(n)

空间复杂度:

O(n)

优点:

  • 代码简单
  • 可读性好

缺点:

  • 使用额外空间

二、方法二:双指针原地反转

使用双指针扫描字符串,找到每个单词的范围并进行反转。

思路

  1. 遍历字符串
  2. 找到单词起始位置
  3. 找到单词结束位置
  4. 调用reverse()反转

代码实现

#include<iostream>#include<algorithm>usingnamespacestd;stringreverseWords(string s){intstart=0;for(inti=0;i<=s.size();i++){if(i==s.size()||s[i]==' '){reverse(s.begin()+start,s.begin()+i);start=i+1;}}returns;}intmain(){string str="Hello World";cout<<reverseWords(str)<<endl;return0;}

输出:

olleH dlroW

时间复杂度

O(n)

空间复杂度:

O(1)

优点:

  • 原地操作
  • 更节省内存

缺点:

  • 实现稍复杂

三、两种方法对比

方法思路空间复杂度适合场景
stringstream拆分单词再反转O(n)简单实现
双指针原地扫描O(1)面试优化

四、进阶问题(面试常问)

很多面试会继续延伸:

1 反转单词顺序

例如:

"Hello World" → "World Hello"

2 去除多余空格

例如:

" hello world " → "world hello"

3 整个字符串反转 + 单词反转

经典算法:

1 先整体反转 2 再逐个单词反转

该题在很多算法平台都有类似题目,例如:

  • LeetCode

五、总结

反转字符串中单词字符顺序的核心方法:

1️⃣ 使用字符串流分割单词
2️⃣ 使用双指针原地反转

关键函数:

reverse()

来自:


如果你愿意,我可以继续给你整理一份C++字符串算法经典 20 题(面试高频),包括:

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

【C++哲学】面向对象的三大特性之 继承

在 C 的 面向对象编程&#xff08;OOP&#xff09; 中&#xff0c;三大核心特性是&#xff1a; 封装&#xff08;Encapsulation&#xff09; 继承&#xff08;Inheritance&#xff09; 多态&#xff08;Polymorphism&#xff09;继承是其中非常重要的一部分&#xff0c;它可以…

作者头像 李华
网站建设 2026/7/14 15:52:20

当光伏遇上粒子群:配电网优化配置实战

配电网光伏储能双层优化配置模型(选址定容)&#xff0c;matpower 关键词&#xff1a;选址定容 配电网 光伏储能 双层优化 粒子群算法 多目标粒子群算法 kmeans聚类 仿真平台&#xff1a;matlab 参考文档&#xff1a;《含高比例可再生能源配电网灵活资源双层优化配置》 主要内容…

作者头像 李华
网站建设 2026/7/14 15:52:18

AI 大模型井喷!普通大学生该学什么?一文讲透学习 / 就业影响与破局方向

随着人工智能技术的迅猛迭代&#xff0c;普通大学生的学习方式、就业前景及职业规划正经历前所未有的深刻变革。这种变革并非单向的冲击&#xff0c;而是在带来挑战的同时&#xff0c;孕育着全新的发展机遇。本文将从学习模式革新、就业市场重塑、核心能力升级三大维度展开剖析…

作者头像 李华
网站建设 2026/7/14 15:52:17

基于共享储能电站的工业用户日前优化经济调度

MATLAB代码&#xff1a;基于共享储能电站的工业用户日前优化经济调度 关键词&#xff1a;共享储能 储能电站 容量优化配置 充放电优化 日前优化调度 参考文档&#xff1a;《基于共享储能电站的工业用户日前优化经济调度》 仿真平台&#xff1a;MATLABCPLEX 主要内容&#xf…

作者头像 李华