考察点: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]);
}
}
}
};