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--
    }    
}

你可能感兴趣的:(golang)