diff --git a/6-zigzag-conversion.go b/6-zigzag-conversion.go new file mode 100644 index 0000000..b820c56 --- /dev/null +++ b/6-zigzag-conversion.go @@ -0,0 +1,27 @@ +package main + +func ZigZagConvert(s string, numRows int) string { + res := make([]string, numRows) + slen := len(s) + resStr := "" + + for i := 0; i < slen; { + j := 0 + for ; j < numRows && i < slen; j++ { + res[j] += string(s[i]) + i++ + } + k := j - 2 + for k > 0 && i < slen { + res[k] += string(s[i]) + i++ + k-- + } + } + + for i := 0; i < numRows; i++ { + resStr += res[i] + } + + return resStr +} diff --git a/6-zigzag-conversion_test.go b/6-zigzag-conversion_test.go new file mode 100644 index 0000000..11a04f2 --- /dev/null +++ b/6-zigzag-conversion_test.go @@ -0,0 +1,20 @@ +package main + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestZigZagConvert3(t *testing.T) { + input := "PAYPALISHIRING" + expected := "PAHNAPLSIIGYIR" + res := ZigZagConvert(input, 3) + assert.Equal(t, expected, res) +} + +func TestZigZagConvert4(t *testing.T) { + input := "PAYPALISHIRING" + expected := "PINALSIGYAHRPI" + res := ZigZagConvert(input, 4) + assert.Equal(t, expected, res) +}