Dada una string S y un entero R , la tarea es codificar la string llenando primero cada carácter en forma de columna de arriba a abajo en una array que tiene R filas y luego imprimiendo la array en fila.
Ejemplos:
Entrada : S = «abcdefgh», R = 3
Salida: adgbehcf
Explicación: La array formada es:
adg beh
cf
Entonces
, cuando se imprime en fila, da la string codificada como «adgbehcf»Entrada: S = “GeeksForGeeks”, R = 5
Salida: GFeeokerskGse
Explicación: El patrón formado es:
G fe
eokers
k
G
s e
Enfoque: El enfoque es utilizar una array de strings temporales de tamaño R . Recorra cada carácter de la string S y agréguelo al final de la string en el índice i%R de la array temp . Ahora recorra la fila de la array temporal para obtener la string codificada.
A continuación se muestra la implementación del enfoque anterior.
C++14
// C++ code to implement above approach #include <bits/stdc++.h> using namespace std; // Function to encode the string string printRowWise(string S, int R) { vector<string> temp(R); string ans; for (int i = 0; i < S.length(); i++) temp[i % R].push_back(S[i]); for (int i = 0; i < R; i++) { for (int j = 0; j < temp[i].size(); j++) ans.push_back(temp[i][j]); } return ans; } // Driver code int main() { string S = "GeeksForGeeks"; int R = 5; cout << printRowWise(S, R); return 0; }
Java
// Java code to implement above approach import java.util.*; class GFG{ // Function to encode the String static String printRowWise(char []S, int R) { String []temp = new String[R]; String ans=""; for (int i = 0; i < S.length; i++) { if(temp[i % R] == null) temp[i % R] = ""; temp[i % R] += (S[i]); } for (int i = 0; i < R; i++) { for (int j = 0; j < temp[i].length(); j++) ans+=(temp[i].charAt(j)); } return ans; } // Driver code public static void main(String[] args) { String S = "GeeksForGeeks"; int R = 5; System.out.print(printRowWise(S.toCharArray(), R)); } } // This code is contributed by 29AjayKumar
Python3
# python3 code to implement above approach # Function to encode the string def printRowWise(S, R): temp = ["" for _ in range(R)] ans = "" for i in range(0, len(S)): temp[i % R] += S[i] for i in range(0, R): for j in range(0, len(temp[i])): ans += temp[i][j] return ans # Driver code if __name__ == "__main__": S = "GeeksForGeeks" R = 5 print(printRowWise(S, R)) # This code is contributed by rakeshsahni
C#
// C# code to implement above approach using System; using System.Collections.Generic; class GFG { // Function to encode the string static string printRowWise(string S, int R) { string[] temp = new string[R]; string ans = ""; for (int i = 0; i < S.Length; i++) temp[i % R] += S[i]; for (int i = 0; i < R; i++) { for (int j = 0; j < temp[i].Length; j++) ans += (temp[i][j]); } return ans; } // Driver code public static void Main() { string S = "GeeksForGeeks"; int R = 5; Console.Write(printRowWise(S, R)); } } // This code is contributed by ukasp.
Javascript
<script> // JavaScript code for the above approach // Function to encode the string function printRowWise(S, R) { let temp = new Array(R); for (let i = 0; i < R; i++) { temp[i] = [] } let ans = []; for (let i = 0; i < S.length; i++) temp[i % R].push(S[i]); for (let i = 0; i < R; i++) { for (let j = 0; j < temp[i].length; j++) ans.push(temp[i][j]); } return ans.join(''); } // Driver code let S = "GeeksForGeeks"; let R = 5; document.write(printRowWise(S, R)); // This code is contributed by Potta Lokesh </script>
GFeeokerskGse
Complejidad de tiempo: O(N) donde N es la longitud de la string
Espacio auxiliar: O(N)
Publicación traducida automáticamente
Artículo escrito por prophet1999 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA