考察点:string,边界脚码; 思路:这道题思路简单,关键是要bug free。尤其是在reverse函数里的边界判断时,应该先拿0这样的特殊边界条件测试一下,看是否正确,这样往往能够增加代码的正确率。 C++ 代码:
class Solution {
public:
string reverseStr(
string s,
int k) {
if (k ==
0)
return s;
int len = s.size();
for (
int i=
0; i<len; i+=
2*k) {
reverse(s, i, k);
}
return s;
}
void reverse(
string & s,
int start,
int k) {
if (start + k < s.size()) {
for (
int i=start; i<start + k/
2; i++) {
swap(s[i],s[start + k - (i - start)-
1]);
}
}
else {
int len = s.size() - start;
for (
int i=start; i<start + len/
2; i++) {
swap(s[i],s[s.size() - (i - start)-
1]);
}
}
}
};