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


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

要鋸齒狀的輸出 

首先分組 

如果nRows為m 那么縱列 m 個斜 m-2個 因此 每2m-2個字符是一組 每組占據m-1列

並根據這樣算出要初始化的數組list的大小

1       A    
2     8 B    
3   7   C   G
4 6     D F  
5       E    
1-8算一組 A-G算不完整的最后一組 

接着按照要求 輸出字符即可 用while len>2m-2 之前整組輸出 最后一組單獨輸出 因為長度沒辦法輸出完整租

最后將list種的字符按行輸出即可

class Solution:
    # @param {string} s
    # @param {integer} numRows
    # @return {string}
    def convert(self, s, numRows):
            #初始化
        m=numRows
        if m==1:
            return s
        elif m==2:
            string=''
            for i in range(len(s)):
                if i%2==0:
                    string=string+s[i]
            for i in range(len(s)):
                if i%2==1:
                    string=string+s[i]
            return string
        else:
            #2m-2 多少個數分一組
            a=len(s)/(2*m-2)#每組占多少列
            b=len(s)%(2*m-2)#最后不足一組的長度
            if b<=m:
                n=a*(m-1)+1
            else:
                n=a*(m-1)+b-m+1
            #m行n列
            list=[([0] * n) for i in range(m)]
            index=0
            while len(s)>=2*m-2:
                #輸出列 m個
                for i in range(m):
                    list[i][index*(m-1)]=s[i]
                #輸出斜
                for i in range(m-2):
                    list[m-i-2][index*(m-1)+i+1]=s[i+m]
                index=index+1
                s=s[2*m-2:]
            else:#剩下的不足以輸出整個組 判斷個數能輸出列否 斜否
                if len(s)<=m:#只列
                    for i in range(len(s)):
                        list[i][index*(m-1)]=s[i]
                else:
                    extra=len(s)-m
                    for i in range(m):
                        list[i][index*(m-1)]=s[i]
                    for i in range(extra):
                        list[m-i-2][index*(m-1)+i+1]=s[i+m]
            sol=''
            for i in range(m):
                for j in range(n):
                    if list[i][j]!=0:
                        sol=sol+list[i][j]
            return sol



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com