class Solution {
public:
string reverseStr(string s, int k) {
for(int i = 0; i < s.size(); i += 2*k){
if(i+k < s.size()){
reverse(s.begin()+i, s.begin()+i+k);//如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
continue;
}
reverse(s.begin()+i, s.end());//如果剩余字符少于 k 个,则将剩余字符全部反转。
}
return s;
}
};
Go:
func reverseStr(s string, k int) string {
ss := []byte(s)//字符串是常量,可以通过索引访问其字节单元。但不能修改某个字节的值。
for i := 0; i < len(ss); i += 2*k{
if i + k < len(ss){
reverse(ss[i:i+k])
continue
}
reverse(ss[i:])
}
return string(ss)
}
func reverse(s []byte){
l,r := 0, len(s)-1
for l < r{
s[l],s[r] = s[r],s[l]
l++
r--
}
}