Files
codekata-golang/20201211/main.go
2020-12-11 10:19:38 +08:00

48 lines
940 B
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package main
import (
"fmt"
"strings"
)
//给定一个字符串 s 和一个整数 k你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。
//
//如果剩余字符少于 k 个,则将剩余字符全部反转。
//如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
func main() {
}
func process(k int, s string) string {
sb := strings.Builder{}
l := 0
r := 2 * k
for {
fmt.Println(l, r)
if r > len(s) {
if l > len(s) {
sb.WriteString(s[r-2*k:])
} else {
sb.WriteString(reverse(s[l : l+k]))
sb.WriteString(s[l+k:])
}
break
}
sb.WriteString(reverse(s[l : l+k]))
sb.WriteString(s[l+k : r])
l += 2 * k
r += 2 * k
}
return sb.String()
}
func reverse(s string) string {
src := []rune(s)
l := len(src)
for i := 0; i < l/2; i++ {
src[i], src[l-i-1] = src[l-i-1], src[i]
}
return string(src)
}