Dada una string s y una array de espacios [] que describen los índices de la string original donde se agregarán espacios. La tarea es agregar espacios en posiciones dadas en espacios [] e imprimir la string formada.
Ejemplos:
Entrada: s = “GeeksForGeeK”, espacios = {1, 5, 10}
Salida: “G eeks ForGe eK”
Explicación: Los caracteres subrayados en “G e eks F orGe e K” se relacionan con los índices 1, 5 y 10 Después de eso, ponga espacios delante de esos caracteres.Entrada: s = «ilovegeeksforgeek», espacios = {1, 5, 10, 13}
Salida: «me encantan los geeks por geek»
Enfoque n. ° 1: este problema se basa en la implementación de strings simples. Siga los pasos a continuación para resolver el problema dado.
- Inicialice con un espacio en la nueva string de tamaño de la suma de la longitud de ambas arrays.
- Visite el índice y donde sea que el índice sea igual al valor del espacio actual en la array space[] , sáltelo ya que el espacio ya está allí.
- De lo contrario, siga asignando el valor de la string principal
- Aquí la adición de ‘l’ en la línea { if(l<N and i==sp[l]+l) } es muy interesante de observar:
- Los valores en la array espacial están básicamente de acuerdo con la string de entrada anterior.
- Pero en la nueva string, estos valores de espacio o índices básicamente se desplazan según la cantidad de espacios encontrados antes.
- Imprime la string formada al final.
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ program for above approach #include <bits/stdc++.h> using namespace std; // Function to add space in required positions string spaceintegration(string s, vector<int>& sp) { int M = s.size(), N = sp.size(), l = 0, r = 0; string res(M + N, ' '); // Iterate over M+N length for (int i = 0; i < M + N; i++) { if (l < N and i == sp[l] + l) l++; else res[i] = s[r++]; } // Return the required string return res; } // Driver Code int main() { string s = "ilovegeeksforgeeks"; vector<int> space = { 1, 5, 10, 13 }; // Function Call cout << spaceintegration(s, space) << endl; return 0; }
Java
// Java program for above approach import java.util.*; class GFG { // Function to add space in required positions static String spaceintegration(String s, int []sp) { int M = s.length(), N = sp.length, l = 0, r = 0; String res = newstr(M + N, ' '); // Iterate over M+N length for (int i = 0; i < M + N; i++) { if (l < N && i == sp[l] + l) l++; else res = res.substring(0,i)+s.charAt(r++)+res.substring(i+1); } // Return the required String return res; } static String newstr(int i, char c) { String str = ""; for (int j = 0; j < i; j++) { str+=c; } return str; } // Driver Code public static void main(String[] args) { String s = "ilovegeeksforgeeks"; int[] space = { 1, 5, 10, 13 }; // Function Call System.out.print(spaceintegration(s, space) +"\n"); } } // This code contributed by shikhasingrajput
Python3
# Python3 program for above approach # Function to add space in required positions def spaceintegration(s, sp): M = len(s) N = len(sp) l = 0 r = 0 res = [' '] * (M + N) # Iterate over M+N length for i in range(M + N): if (l < N and i == sp[l] + l): l += 1 else: res[i] = s[r] r += 1 # Return the required string return ''.join(res) # Driver Code if __name__ == "__main__": s = "ilovegeeksforgeeks" space = [ 1, 5, 10, 13 ] # Function Call print(spaceintegration(s, space)) # This code is contributed by ukasp
C#
// C# program for above approach using System; class GFG { // Function to add space in required positions static String spaceintegration(String s, int []sp) { int M = s.Length, N = sp.Length, l = 0, r = 0; String res = newstr(M + N, ' '); // Iterate over M+N length for (int i = 0; i < M + N; i++) { if (l < N && i == sp[l] + l) l++; else res = res.Substring(0,i)+s[r++]+res.Substring(i+1); } // Return the required String return res; } static String newstr(int i, char c) { String str = ""; for (int j = 0; j < i; j++) { str+=c; } return str; } // Driver Code public static void Main() { String s = "ilovegeeksforgeeks"; int[] space = { 1, 5, 10, 13 }; // Function Call Console.Write(spaceintegration(s, space) +"\n"); } } // This code is contributed by Saurabh Jaiswal
Javascript
<script> // JavaScript code for the above approach // Function to add space in required positions function spaceintegration(s, sp) { let M = s.length, N = sp.length, l = 0, r = 0; let res = new Array(M + N).fill(' '); // Iterate over M+N length for (let i = 0; i < M + N; i++) { if (l < N && i == sp[l] + l) l++; else res[i] = s[r++]; } // Return the required string return res.join(''); } // Driver Code let s = "ilovegeeksforgeeks"; let space = [1, 5, 10, 13]; // Function Call document.write(spaceintegration(s, space) + '<br>'); // This code is contributed by Potta Lokesh </script>
i love geeks for geeks
Complejidad temporal: O(M+N)
Espacio auxiliar: O(M+N)
Enfoque n.º 2: este problema se puede resolver mediante el método que usamos para insertar un elemento en una posición específica en la array. Siga los pasos a continuación para resolver el problema dado.
- Tenemos la string s y la posición en el espacio vectorial .
- Itere sobre el elemento del espacio From last of vector to first y siga los siguientes pasos para cada elemento de vector . Sea L elemento del vector.
- Agregue un espacio al final de s.
- Iterar sobre la string hasta la L:
- Mueva el carácter uno a uno hacia adelante hasta L .
- Por último, agregue espacio en L.
- Imprimir string al final.
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ program for above approach #include <bits/stdc++.h> using namespace std; // Function to add space in required positions string spaceintegration(string s, vector<int>& space) { int y = 0; int len = space.size(); while (len--) { int k = space[len] + 1; int l = s.size() - 1; string tem = " "; s += tem; // iterate over string for (int i = l; i >= k - 1; i--) { s[i + 1] = s[i]; } s[k - 1] = tem[0]; y += 1; } return s; } // Driver code int main() { string s = "ilovegeeksforgeeks"; vector<int> space = { 1, 5, 10, 13 }; // Function call cout << spaceintegration(s, space) << endl; return 0; }
Python
# Python3 program for above approach # Function to add space in required positions def spaceintegration(se, space): s = list(se) # Iterate over the string for i in range(len(space)-1, -1, -1): s.insert(space[i], " ") return "".join(s) # Driver Code if __name__ == "__main__": s = "ilovegeeksforgeeks" space = [1, 5, 10, 13] # Function Call print(spaceintegration(s, space)) # This code is contributed by ukasp
C#
// C# program to implement above approach using System; using System.Collections; using System.Collections.Generic; class GFG { // Function to add space in required positions static string spaceintegration(string s, List<int> space) { int y = 0; int len = space.Count; while (len > 0) { len -= 1; int k = space[len] + 1; int l = s.Length - 1; string tem = " "; s += tem; // iterate over string for (int i = l - 1 ; i >= k - 1 ; i--) { // Replaces s[i + 1] with s[i] s = s.Remove(i + 1, 1); s = s.Insert(i + 1, Char.ToString(s[i])); } // Replaces s[k - 1] with tem[0] s = s.Remove(k - 1, 1); s = s.Insert(k - 1, Char.ToString(tem[0])); y += 1; } return s; } // Driver code public static void Main(string[] args){ string s = "ilovegeeksforgeeks"; List<int> space = new List<int>{ 1, 5, 10, 13 }; // Function call Console.WriteLine(spaceintegration(s, space)); } } // This code is contributed by subhamgoyal2014.
Javascript
// JavaScript code for the above approach // Function to add space in required positions function spaceintegration(s, sp) { s = s.split('') // iterate over the space for(let i = sp.length-1; i>=0; i--){ s.splice(sp[i], 0, " "); } // Return the required string return s.join(''); } // Driver Code let s = "ilovegeeksforgeeks"; let space = [1, 5, 10, 13]; // Function Call console.log(spaceintegration(s,space)); // This code is contributed by Sam snehil
i love geeks for geeks
Publicación traducida automáticamente
Artículo escrito por rishabhbatra53 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA