视频讲解:字符串操作进阶! | LeetCode:541. 反转字符串II_哔哩哔哩_bilibili
力扣地址:. - 力扣(LeetCode)
文字讲解:代码随想录
记录:这里其实最重要的是边界的判断 一次走2k 步 剩余长度 等于走的长度i +需要处理的长度k
func reverseStr(s string, k int) string {
ss := []byte(s)
length := len(ss)
for i:=0;i<length;i += 2*k {
if i + k <= length { //这里很重要 剩余长度 等于 总长度 - 走的长度 - 要走的长度
revese(ss[i:i+k])
}else{
revese(ss[i:length])
}
}
return string(ss)
}
func revese(s []byte) {
left := 0
right := len(s)-1
for left < right {
s[left],s[right] = s[right],s[left]
left++
right--
}
}