1. 程式人生 > >6.ZigZag Conversion

6.ZigZag Conversion

app var 想象 golang 人的 本地 num con 轉換

ZigZag顯示字符串

Golang 收獲

  1. []string 格式可以通過strings.Join([]string, "")轉換成str格式
  2. 開始的時候想到的是數組的解決辦法, 隨後想到可以用map的方式+string的方式進行追加;
  3. numRows作為輸入,需要轉換理解為N Rows, 對於列方面則需要想象成 (numRows - 1)進制
  4. 邊界條件需要思考,比如傳人的值為1的時候
  5. LeetCode 上執行的時間是 88ms, 與本地的16.019us不成比例;

案例解釋如下

通過zigzag的方式顯示字符串, 剛看圖的時候不太理解, 突然想到小朋友的漫畫書上狗狗跑進了公園, a big zig zag;

明白字符的顯示是向下,然後45度向右上方輸出;

方案如下:

  1. 建立一個N維數組; // 編碼過程被替換
  2. 建立一個map,key為0,Rownum;

func convert(s string, numRows int) string {
    var i int // position of s
    var j int // increase position of row,
    var k int // increase postion of col
    type STR []string
    m := make(map[int]STR) // a build with map , the key s j, from 0, 1, 2, 3

    if numRows == 1 {
        return s
    }

    for i < len(s) {
        for j = 0; j < numRows && i < len(s); j++ {
            if k%(numRows-1) == 0 {
                m[j] = append(m[j], string(s[i]))
                i++
            } else if (numRows - 1 - k%(numRows-1)) == j {
                m[j] = append(m[j], string(s[i]))
                i++
            }
        }
        k++ // col+1
    }
    var ss string
    var str string
    for j := 0; j < numRows; j++ {
        str = strings.Join(m[j], "")
        ss = ss + str
    }
    return ss
}

6.ZigZag Conversion