Skip to content

Latest commit

 

History

History
48 lines (37 loc) · 1.15 KB

6.-zigzag-conversion.md

File metadata and controls

48 lines (37 loc) · 1.15 KB

6. Zigzag Conversion

  • Medium

  • The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

    P   A   H   N
    A P L S I I G
    Y   I   R
    

    And then read line by line: "PAHNAPLSIIGYIR"

    Write the code that will take a string and make this conversion given a number of rows:

    string convert(string s, int numRows);
    

Analysis

We can keep an counter to record where this character should be(in which of the lines). Then we add that into a list to record it and link the list up.

class Solution:
    def convert(self, s: str, numRows: int) -> str:
        ans=[""]*numRows
        if numRows==1:
            return s
        n=len(s)
        index=0
        step=1
        for i in range(n):
            ans[index]+=s[i]
            if index==numRows-1:
                step=-1
            if index==0:
                step=1
            index+=step
        answer=""
        for i in ans:
            answer+=i
        return answer