一、344反转字符串:使用swap库函数 双指针法(同有序数组的平方)
class Solution {
public:
void reverseString(vector<char>& s) {
int left=0;
int right=s.size()-1;
第一个分号前:init 会首先被执行,且只会执行一次。允许声明并初始化任何循环控制变量。
for(;left<s.size()/2;left++,right--){
swap(s[left],s[right]);
}
}
};
二、541反转字符串2k:自定义reverse函数 i+=2k continue用法
class Solution {
public:
void reverse(string& s, int start, int end) {
for (int i = start, j = end; i < j; i++, j--) {
swap(s[i], s[j]);
}
}
string reverseStr(string s, int k) {
for(int i=0;i<s.size()-1;i+=2*k){
//为什么用=?举例:字符串abc k=3 size=3,size小于2k但等于k 翻转前k个 所以要翻转abc
if(i+k<=s.size()){
reverse(s,i,i+k-1);//左闭右闭 EG:i=0 往后k个为i+k-1
continue;
}
reverse(s,i,s.size()-1);
}
return s;
}
};