LeetCode_One question per day_python_ Pregunta 6 Transformación en zigzag

Organice una cuerda determinada en un patrón de zigzag de arriba hacia abajo y de izquierda a derecha de acuerdo con el número de líneas dado.

Por ejemplo, cuando la cadena de entrada es "LEETCODEISHIRING" y el número de filas es 3, la disposición es la siguiente:

Después de L C I R
ETOESIIG
E D H N
, su salida debe leerse línea por línea de izquierda a derecha para generar una nueva cadena, como: "LCIRETOESIIGEDHN".

Implemente esta función que transforma una cadena en un número específico de líneas:

string convert (string s, int numRows);
Ejemplo 1:

Entrada: s = "LEETCODEISHIRING", numRows = 3
Salida: "LCIRETOESIIGEDHN"
Ejemplo 2:

Entrada: s = "LEETCODEISHIRING", numRows = 4
Salida: "LDREOEIIECIHNTSG"
Explicación:

L D R
E OE II
EC IH N
T S G

Fuente: LeetCode
 

class Solution:
    def convert(self, s: str, numRows: int) -> str:
        if numRows < 2: # 一行的情况下 直接返回
            return s
        res = ["" for _ in range(numRows)]
        i, flag = 0, -1
        #    flag 必须现为 -1 
        #    因为 现为1 的话 进入 if判断 变为 -1  然后 0 += -1   i = -1
        #    就错了
        for c in s:
            res[i] += c 
            if i == 0 or i == numRows - 1:
                flag = -flag
            i += flag
        return ''.join(res)

 

Supongo que te gusta

Origin blog.csdn.net/qq_42548880/article/details/108508073
Recomendado
Clasificación