注意区分是s.size()还是s.size()-1
巧用reverse
注意:
1.reverse(s.begin(),s.begin()+i)翻转的是s[0]到s[i-1]
2.i~i+k一共有K+1个数
class Solution {
public:
string reverseStr(string s, int k) {
int i;
for (i = 0; i < s.size(); i += 2 * k) {
if (i + k - 1 < s.size()) {
reverse(s.begin() + i, s.begin() + i + k);
} else {
reverse(s.begin() + i, s.end());
}
}
// if()
return s;
}
};
p.s.之前有考虑i超过边界,但i-2*k到i之间数没有考虑全怎么办
其实
if (i + k - 1 < s.size()) {
reverse(s.begin() + i, s.begin() + i + k);
} else {
reverse(s.begin() + i, s.end());
}
已经考虑全了