6.ZigZag Conversion
阿新 • • 發佈:2018-11-06
app var 想象 golang 人的 本地 num con 轉換
ZigZag顯示字符串
Golang 收獲
- []string 格式可以通過strings.Join([]string, "")轉換成str格式
- 開始的時候想到的是數組的解決辦法, 隨後想到可以用map的方式+string的方式進行追加;
- numRows作為輸入,需要轉換理解為N Rows, 對於列方面則需要想象成 (numRows - 1)進制
- 邊界條件需要思考,比如傳人的值為1的時候
- LeetCode 上執行的時間是 88ms, 與本地的16.019us不成比例;
案例解釋如下
通過zigzag的方式顯示字符串, 剛看圖的時候不太理解, 突然想到小朋友的漫畫書上狗狗跑進了公園, a big zig zag;
明白字符的顯示是向下,然後45度向右上方輸出;
方案如下:
- 建立一個N維數組; // 編碼過程被替換
- 建立一個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