http://oj.leetcode.com/problems/zigzag-conversion/
想不出遞迴要怎麼寫,直接計算新字串中每個位置是在原本的字串的哪裡。把ZigZag看成一堆V的樣子的話,每個block會有2 + (nRows - 2) * 2 = blockSize個char。第i個block的第一個char的index會在原本字串的blockSize * i位置。這同時也是ZigZag最上面那行,也就是相當於新字串的最前面幾個char。
接下來每個V block裡面的index都是相對這個去推算出來。第i-th block的index是
i * blockSize
i * blockSize + 1, i * blockSize + (blockSize - 1)
i * blockSize + 2, i * blockSize + (blockSize - 2)
i * blockSize + 3, i * blockSize + (blockSize - 3)
...
i * blockSize + nRows - 1
然後可以發現左邊col的規則就是i * blocksize + row,然後除了第一個row和最後一個row,其他的char右邊都還會有第二個char要填。
2014年2月10日 星期一
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言