1234567891011121314151617181920212223242526272829 |
- package main
- func convert(s string, numRows int) string {
- n := len(s)
- if n < 3 || numRows == 1 {
- return s
- }
- cycle := numRows*2 - 2
- arr := make([][]rune, numRows)
- for i, v := range s {
- idx := i % cycle
- if idx < numRows {
- arr[idx] = append(arr[idx], v)
- } else {
- arr[(numRows-1)*2-idx] = append(arr[(numRows-1)*2-idx], v)
- }
- }
- res := make([]rune, 0)
- for _, v := range arr {
- res = append(res, v...)
- }
- return string(res)
- }
- /* func main() {
- fmt.Println(convert("PAYPALISHIRING", 3))
- fmt.Println(convert("ABCDE", 4))
- fmt.Println("PAHNAPLSIIGYIR")
- } */
|