Dada una string str de longitud N y un entero K , la tarea es dividir la string en K grupos de tamaño y si al último grupo no le quedan K caracteres, entonces se usa un carácter ch para completar el grupo.
Ejemplos:
Entrada: str = “Algoritmos”, K = 3, ch = “@”
Salida: Algoritmo s@@
Explicación:
Los primeros 3 caracteres “alg” forman el primer grupo.
Los siguientes 3 caracteres “ori” forman el segundo grupo.
Los últimos 3 caracteres “thm” forman el tercer grupo.
Para el último grupo, solo existe el carácter ‘s’ de la string.
Para completar este grupo, agregue ‘@’ dos veces.Entrada: str = “Algoritmo”, K = 3, ch = “@”
Salida: Algoritmo
Explicación:
Similar al ejemplo anterior,
los primeros 3 caracteres “alg” forman el primer grupo.
Los siguientes 3 caracteres “ori” forman el segundo grupo.
Los últimos 3 caracteres “thm” forman el tercer grupo.
Dado que todos los grupos pueden llenarse completamente con caracteres de la string, no es necesario usar ch.
Enfoque: Este es un problema simple relacionado con la implementación. Siga los pasos que se mencionan a continuación:
- Inicialice res como una string vacía.
- Comience a atravesar la string y cuando el tamaño de la string res sea igual a K, coloque una string res en el vector de resultados y vacíe la string res nuevamente para una mayor división .
- Y por último, si la string res no está vacía y el tamaño no es igual a ka, use el carácter Extra para llenarlo, el último grupo.
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ code to implement above approach #include <bits/stdc++.h> using namespace std; // Function to split the string vector<string> dividestring(string str, int K, char ch) { int N = str.size(); int j = 0, i = 0; vector<string> result; string res = ""; while (j < N) { res += str[j]; if (res.size() == K) { result.push_back(res); res = ""; } j++; } if (res != "") { while (res.size() < K) { res += ch; } result.push_back(res); } return result; } // Driver code int main() { string str = "Algorithms"; int K = 3; char ch = '@'; vector<string> ans = dividestring(str, K, ch); for (auto i : ans) { cout << i << "\n"; } return 0; }
Java
// Java code to implement above approach import java.util.ArrayList; class GFG { // Function to split the String static ArrayList<String> divideString(String str, int K, char ch) { int N = str.length(); int j = 0; ArrayList<String> result = new ArrayList<String>(); String res = ""; while (j < N) { res += str.charAt(j); if (res.length() == K) { result.add(res); res = ""; } j++; } if (res != "") { while (res.length() < K) { res += ch; } result.add(res); } return result; } // Driver code public static void main(String args[]) { String str = "Algorithms"; int K = 3; char ch = '@'; ArrayList<String> ans = divideString(str, K, ch); for (String i : ans) { System.out.println(i); } } } // This code is contributed by gfgking.
Python3
# python3 code to implement above approach # Function to split the string def dividestring(str, K, ch): N = len(str) j, i = 0, 0 result = [] res = "" while (j < N): res += str[j] if (len(res) == K): result.append(res) res = "" j += 1 if (res != ""): while (len(res) < K): res += ch result.append(res) return result # Driver code if __name__ == "__main__": str = "Algorithms" K = 3 ch = '@' ans = dividestring(str, K, ch) for i in ans: print(i) # This code is contributed by rakeshsahni
C#
// C# code to implement above approach using System; using System.Collections.Generic; class GFG { // Function to split the string static List<string> dividestring(string str, int K, char ch) { int N = str.Length; int j = 0; List<string> result = new List<string>(); string res = ""; while (j < N) { res += str[j]; if (res.Length == K) { result.Add(res); res = ""; } j++; } if (res != "") { while (res.Length < K) { res += ch; } result.Add(res); } return result; } // Driver code public static void Main() { string str = "Algorithms"; int K = 3; char ch = '@'; List<string> ans = new List<string>(); ans = dividestring(str, K, ch); foreach(var i in ans) { Console.WriteLine(i); } } } // This code is contributed by Taranpreet
Javascript
<script> // JavaScript code for the above approach // Function to split the string function dividestring(str, K, ch) { let N = str.length; let j = 0, i = 0; let result = []; let res = ""; while (j < N) { res += str[j]; if (res.length == K) { result.push(res); res = ""; } j++; } if (res != "") { while (res.length < K) { res += ch; } result.push(res); } return result; } // Driver code let str = "Algorithms"; let K = 3; let ch = '@'; let ans = dividestring(str, K, ch); for (let i of ans) { document.write(i + '<br>') } // This code is contributed by Potta Lokesh </script>
Alg ori thm s@@
Complejidad temporal: O(N)
Espacio auxiliar: O(N)
Publicación traducida automáticamente
Artículo escrito por rishabhbatra53 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA