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);
Example 1:
Input: s = “PAYPALISHIRING”, numRows = 3
Output: “PAHNAPLSIIGYIR”
Example 2:
Input: s = “PAYPALISHIRING”, numRows = 4
Output: “PINALSIGYAHRPI”
Explanation: P I N A L S I G Y A H R P I
Example 3:
Input: s = “A”, numRows = 1
Output: “A”
Constraints:
1 <= s.length <= 1000s consists of English letters (lower-case and upper-case), ',' and '.'.1 <= numRows <= 1000Here are the steps to solve the “Zigzag Conversion” problem:
numRows) is 1 or the length of the string (s) is less than or equal to the number of rows, return the original string.s.class Solution:
    def convert(self, s: str, numRows: int) -> str:
        # Handle special cases
        if numRows == 1 or len(s) <= numRows:
            return s
        # Initialize rows
        rows = [''] * numRows
        index = 0
        direction = 1  # 1 for down, -1 for up
        # Iterate through the string
        for char in s:
            # Fill rows
            rows[index] += char
            # Change direction if reaching top or bottom row
            if index == 0:
                direction = 1
            elif index == numRows - 1:
                direction = -1
            # Move to the next row
            index += direction
        # Read zigzag pattern
        result = ''.join(rows)
        # Return the final result
        return result
# Example Usage:
solution = Solution()
# Example 1:
s1 = "PAYPALISHIRING"
numRows1 = 3
print(solution.convert(s1, numRows1))  # Output: "PAHNAPLSIIGYIR"
# Example 2:
s2 = "PAYPALISHIRING"
numRows2 = 4
print(solution.convert(s2, numRows2))  # Output: "PINALSIGYAHRPI"
# Example 3:
s3 = "A"
numRows3 = 1
print(solution.convert(s3, numRows3))  # Output: "A"
This code defines a Solution class with a method convert that takes a string s and the number of rows numRows as input and returns the zigzag conversion of the string. The example usage demonstrates how to create an instance of the Solution class and call the convert method with different inputs.