关于golang:Leetcode专题字符串541反转字符串II

1次阅读

共计 494 个字符,预计需要花费 2 分钟才能阅读完成。

力扣链接:
https://leetcode-cn.com/probl…
解题思路:

  1. 给定一个字符串 s 和一个整数 k,从字符串结尾算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果残余字符少于 k 个,则将残余字符全副反转。如果残余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符放弃原样。
  2. 这道题其实就是还原题目,解法中有两个条件:(1)每计数 2k 个字符,那么符合条件,进行判断(2)判断的时候分为两个条件:如果间隔字符完结 >= k 个字符,那么翻转前 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--
    }    
}
正文完
 0