Leetcode专题[字符串]-541-反转字符串II

【Leetcode专题[字符串]-541-反转字符串II】力扣链接:
https://leetcode-cn.com/probl...
解题思路:

  1. 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
  2. 这道题其实就是还原题目,解法中有两个条件:(1)每计数2k个字符,那么符合条件,进行判断(2)判断的时候分为两个条件:如果距离字符结束>=k个字符,那么翻转前k个字符,如果
func reverseStr(s string, k int) string { n := len(s) bs := []byte(s) for i := 0; i < n; i += (2 * k) { if i + k <= n{ reverse(bs[i:i+k]) } else { reverse(bs[i:n]) } } return string(bs) }func reverse(s []byte) { n := len(s) low, high := 0, n-1 for low <= high { s[low], s[high] = s[high], s[low] low++ high-- } }

    推荐阅读