6. transformar LeetCode en forma de Z (para encontrar la ley)

1. Tema

El número de una cadena dada de acuerdo a la fila dada, a abajo, de izquierda a derecha desde la disposición en forma de Z.

Ejemplo, la cadena de entrada es el número de filas "LEETCODEISHIRING" es 3, dispuestas como sigue:

L   C   I   R
E T O E S I I G
E   D   H   N

Después de eso, necesita la salida de izquierda a derecha línea de lectura por línea, producir una nueva cadena, tales como: "LCIRETOESIIGEDHN".

Se dará cuenta de esta conversión de cadenas función especificada número de líneas:

string convert(string s, int numRows);
示例 1:
输入: s = "LEETCODEISHIRING", numRows = 3
输出: "LCIRETOESIIGEDHN"

示例 2:
输入: s = "LEETCODEISHIRING", numRows = 4
输出: "LDREOEIIECIHNTSG"
解释:
L     D     R
E   O E   I I
E C   I H   N
T     S     G

Fuente: estancia botón (LeetCode)
enlace: https: //leetcode-cn.com/problems/zigzag-conversion
con derechos de autor por deducción de todas las redes. reimpresión comercial póngase en contacto con la reimpresión autorizada oficial, no comercial por favor indique la fuente.

2. Resolución de Problemas

n line: patrón espaciado entre caracteres: paso máximo g = 2n-2

0: g ---g----g
1:g-2---2---g-2----2
2:g-4---4---g-4----4
.
.
n-2:2---g-2---2---g-2
n-1: g ---g----g
class Solution {
public:
    string convert(string s, int numRows) {
        if(numRows == 1)
            return s;
        int gap = 2*numRows-2;
        int startGap, i, j, k = 0;
        string ans(s.size(),'0');
        for(i = 0; i < numRows; i++) 
        {	//遍历每行
            ans[k++] = s[i];//首字符
            startGap = gap-2*i;//起始间距
            if(startGap==0)
                startGap = gap;
            for(j = i+startGap; j < s.size(); j += startGap)
            {
                ans[k++] = s[j];
                startGap = gap-startGap;//间距交替变化
                if(startGap==0)
                    startGap = gap;
            }
        }
        return ans;
    }
};

Aquí Insertar imagen Descripción

Publicados 711 artículos originales · ganado elogios 700 · vistas 210 000 +

Supongo que te gusta

Origin blog.csdn.net/qq_21201267/article/details/104782401
Recomendado
Clasificación