LC6. Transformación en forma de Z

Transformación en forma de Z

Descripción del problema:
  organice una cadena de caracteres dada en un patrón en zigzag de arriba a abajo y de izquierda a derecha según 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:

L C I R
ETOE S I I G
E D H N

Después de eso, su salida debe leerse línea por línea de izquierda a derecha, produciendo una nueva cadena, como: "LCIRETOESIIGEDHN".

Implemente esta función que transforma la cadena al número especificado de líneas:

conversión de cadenas (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 I I
EC I H N
T S G

Ideas para resolver problemas:

  Esta pregunta se trata de encontrar reglas, muchas de las soluciones son encontrar su período 2n-2, soy relativamente simple y grosero, guardo directamente los caracteres de cada columna en el contenedor correspondiente, la columna más larga debe ser numRows, una en el medio Es suficiente almacenar de atrás hacia adelante, básicamente fijado en numRows-2.

El código es el siguiente:

#include<iostream>
#include<vector> 
using namespace std;
string convert(string s, int numRows) {
        string a[numRows];
        if(s.size()==numRows){//字符串的大小等于numRows直接返回s
            return s;
        }
        for(int i=0;i<s.size();i++){
            for(int j=0;j<numRows&&i<s.size();j++,i++){//读取完整的一列,i记得要判断会不会出界
                a[j]+=s[i];
            }
            for(int j=numRows-2;j>=1&&i<s.size();j--,i++){//从后往前读取单独一个的一列
                a[j]+=s[i];
            }
            i--;//一次循环结束了会i++,上面结束循环已经+1了,所以要-1
        }
        string tmp="";
        for(int i=0;i<numRows;i++){//把保存的字符串都放到tmp中
            tmp+=a[i];
        }
        return tmp;
    }
int main(){
	string a="LEETCODEISHIRING";
	cout<<convert(a,4);
	return 0;
} 
14 artículos originales publicados · Me gusta 10 · Visitantes más de 10,000

Supongo que te gusta

Origin blog.csdn.net/Milan_1in/article/details/105447907
Recomendado
Clasificación