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

C++基础(③反转字符串(字符串 + 双指针))

题目描述:编写一个函数,将输入的字符串反转过来(要求原地修改字符串,不使用额外空间)。
示例:输入 s = ["h","e","l","l","o"] → 输出 ["o","l","l","e","h"]。
思路提示:

用两个指针分别指向字符串的开头(left=0)和结尾(right = s.size()-1),交换两个指针指向的字符,然后 left++、right--,直到 left >= right。
注意:C++ 中字符串是可变的,直接通过下标修改即可。

代码

#include <iostream>
#include <vector>using namespace std;// 原地反转字符串
void reverseString(vector<char>& s) {int left = 0;int right = static_cast<int>(s.size()) - 1;while (left < right) {swap(s[left], s[right]);++left;--right;}
}// 测试
int main() {vector<char> s = {'h', 'e', 'l', 'l', 'o'};reverseString(s);for (char c : s) cout << c << ' ';return 0;
}

swap 帮你交换,static_cast 安全转型,vector 是动态数组,& 避免拷贝,范围 for 让遍历写法极简。

http://www.xdnf.cn/news/19340.html

相关文章:

  • 阿里巴巴拍立淘API返回值解析与商品信息优化指南
  • 刷题日记0829
  • Libvio 访问异常排查指南
  • OpenEuler部署LoganaLyzer
  • linux实时性研究
  • Python 编码与加密全解析:从字符编码到 RSA 签名验证
  • Win11 压缩实测:Win11 的压缩软件的最佳配置和使用方式
  • 龙迅#LT7621GX适用于两路HDMI2.1/DP1.4A转HDMI2.1混切应用,分辨率高达8K60HZ!
  • Anaconda安装与conda使用详细版
  • Linux系统编程—进程概念
  • 文本嵌入模型的本质
  • 进程与线程的根本区别
  • Parasoft赋能测试:精准捕捉运行时缺陷
  • 解决RTX3070魔改16G在UBUNTU中黑屏问题
  • AI ToB,阿里商旅找了个好赛道
  • C++ 并发编程:全面解析主流锁管理类
  • Day17_【机器学习—特征预处理(归一化和标准化)】
  • Unity学习----【数据持久化】二进制存储(一)
  • 仿真高斯光束同时分析光纤耦合特点并仿真
  • 大模型入门学习微调实战:基于PyTorch和Hugging Face电影评价情感分析模型微调全流程(附完整代码)手把手教你做
  • Lenovo C225 一体机拆机维修教程
  • 从零开始学Shell编程:从基础到实战案例
  • 【完整源码+数据集+部署教程】骨折检测系统源码和数据集:改进yolo11-EfficientHead
  • flume事务机制详解:保障数据可靠性的核心逻辑
  • Vue3 kkfileview 的使用
  • 第八章 惊喜01 测试筹备会
  • Shell 中 ()、(())、[]、{} 的用法详解
  • ros2--service/服务--接口
  • Redis不同场景下的注意事项
  • C++中自由函数(free function)概念