【Day8 算法训练营】

344.反转字符串

思路

双指针解法

代码解读

(1)swap(s[i], s[j]);可以交换s[i],和s[j]。(s是一个数组)
(2)void reverseString(vector<char>& s)
函数定义的时候使用的是引用传递的方式,所以函数调用的时候可以如下操作
vector<char> str;
reverseString(str);
传递方式函数定义函数调用函数内对a修改的影响
值传递fun(int a)fun(x)外部x不变
指针传递fun(int *a)fun(&x)外部x同步更改
引用传递fun(int &a)fun(x)外部x同步更改

541. 反转字符串II

题目:剑指Offer 05.替换空格

思路

双指针解法

  • 遍历字符串大小,定义一个count变量,计算空格个数
  • 扩充字符串大小,扩充count个大小
  • 定义双指针,i指针指向原字符串长度的末尾,j指向扩充后的字符串末尾
  • 循环查找
    • 如果字符串s[i] != ’ ',则s[j] = s[]i;
    • 否则,s[j] = ‘0’,s[j-1]=‘2’,s[j-2]=‘%’,j=j-2
    • 循环条件:i<j

代码解读

(1)扩充字符串/数组大小
string s = "ssdfsdf";
s.resize(s.size() + 2 * 2);

题目:剑指Offer58-II.左旋转字符串

思路

代码解读

(1)C++反转函数reverse
string s;
reverse(s.begin(), s.begin() + n);  n表示要反转的长度
reverse(s.begin() + n, s.end()); s.end表示要反转的结尾为止
reverse(s.begin(), s.end());
第一个参数:要反转的起始位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值