Friday, August 14, 2015

Leetcode 6. ZigZag Conversion

https://leetcode.com/problems/zigzag-conversion/

An interesting problem. There are many different solutions, and I prefer the one that easy to understand. The thought is simple: use a parameter 'step' to simulate the process.

Solution:
# T:O(n) S:O(1)
class Solution:
    # @param {string} s
    # @param {integer} numRows
    # @return {string}
    def convert(self, s, numRows):
        if numRows == 1:
            return s
        rowN, step, ret = -1, 1, ['' for _ in xrange(numRows)]
        for i in xrange(len(s)):
            rowN += step
            if rowN == numRows:
                rowN -= 2
                step = -1
            elif rowN == -1:
                rowN += 2
                step = 1
            ret[rowN] += s[i]
        return ''.join(ret) 
Run Time: 112 ms

No comments:

Post a Comment