Dada una string que tiene un conjunto de palabras y espacios, escriba un programa para mover todos los espacios al frente de la string, atravesando la string solo una vez.
Ejemplos:
Input : str = "geeks for geeks" Output : ste = " geeksforgeeks" Input : str = "move these spaces to beginning" Output : str = " movethesespacestobeginning" There were four space characters in input, all of them should be shifted in front.
Método 1 (Usando Swap): La idea es mantener dos índices i y j. Travesía de principio a fin. Si el índice actual contiene espacio, intercambie caracteres en el índice i con el índice j. Esto traerá todos los espacios al comienzo de la array.
Implementación:
C++
// C++ program to bring all spaces in front of // string using swapping technique #include<bits/stdc++.h> using namespace std; // Function to find spaces and move to beginning void moveSpaceInFront(char str[]) { // Traverse from end and swap spaces int i = strlen(str)-1; for (int j = i; j >= 0; j--) if (str[j] != ' ') swap(str[i--], str[j]); } // Driver code int main() { char str[] = "Hey there, it's GeeksforGeeks"; moveSpaceInFront(str); cout << str; return 0; }
Java
// Java program to bring all spaces in front of // string using swapping technique class GFG { // Function to find spaces and move to beginning static void moveSpaceInFront(char str[]) { // Traverse from end and swap spaces int i = str.length-1; for (int j = i; j >= 0; j--) if (str[j] != ' ') { char c = str[i]; str[i] = str[j]; str[j] = c; i--; } } // Driver code public static void main(String[] args) { char str[] = "Hey there, it's GeeksforGeeks".toCharArray(); moveSpaceInFront(str); System.out.println(String.valueOf(str)); } } // This code is contributed by // 29AjayKumar
Python3
# Python3 program to bring all spaces # in front of string using swapping technique # Function to find spaces and move to beginning def moveSpaceInFront(s): # Traverse from end and swap spaces i = len(s) - 1; for j in range(i, -1, -1): if (s[j] != ' '): s = swap(s, i, j); i -= 1; return s; def swap(c, i, j): c = list(c) c[i], c[j] = c[j], c[i] return ''.join(c) # Driver code s = "Hey there, it's GeeksforGeeks"; s = moveSpaceInFront(s); print(s); # This code is contributed # by Princi Singh
C#
// C# program to bring all spaces in front of // string using swapping technique using System; class GFG { // Function to find spaces and move to beginning static void moveSpaceInFront(char []str) { // Traverse from end and swap spaces int i = str.Length-1; for (int j = i; j >= 0; j--) if (str[j] != ' ') { char c = str[i]; str[i] = str[j]; str[j] = c; i--; } } // Driver code public static void Main() { char []str = "Hey there, it's GeeksforGeeks".ToCharArray(); moveSpaceInFront(str); Console.WriteLine(String.Join("",str)); } } // This code is contributed by PrinciRaj1992
Javascript
<script> // Javascript program to bring all spaces // in front of string using swapping technique // Function to find spaces and move to beginning function moveSpaceInFront(str) { // Traverse from end and swap spaces let i = str.length-1; for(let j = i; j >= 0; j--) if (str[j] != ' ') { let c = str[i]; str[i] = str[j]; str[j] = c; i--; } } // Driver code let str = "Hey there, it's GeeksforGeeks".split(""); moveSpaceInFront(str); document.write((str).join("")); // This code is contributed by rag2127 </script>
Heythere,it'sGeeksforGeeks
Complejidad de tiempo-: O(n)
Espacio auxiliar-: O(1) Método 2 (Sin usar swap): La idea es copiar todos los caracteres que no sean espacios hasta el final. Finalmente copiar espacios.
Implementación:
C++
// CPP program to bring all spaces in front of // string using swapping technique #include<bits/stdc++.h> using namespace std; // Function to find spaces and move to beginning void moveSpaceInFront(char str[]) { // Keep copying non-space characters int i = strlen(str); for (int j=i; j >= 0; j--) if (str[j] != ' ') str[i--] = str[j]; // Move spaces to be beginning while (i >= 0) str[i--] = ' '; } // Driver code int main() { char str[] = "Hey there, it's GeeksforGeeks"; moveSpaceInFront(str); cout << str; return 0; }
Java
// Java program to bring all spaces in front of // string using swapping technique class GFG { // Function to find spaces and move to beginning static void moveSpaceInFront(char str[]) { // Keep copying non-space characters int i = str.length-1; for (int j = i; j >= 0; j--) if (str[j] != ' ') str[i--] = str[j]; // Move spaces to be beginning while (i >= 0) str[i--] = ' '; } // Driver code public static void main(String[] args) { char str[] = "Hey there, it's GeeksforGeeks".toCharArray(); moveSpaceInFront(str); System.out.println(String.valueOf(str)); } } // This code is contributed by Rajput-Ji
Python3
# Python3 program to bring all spaces # in front of string using swapping technique # Function to find spaces and # move to beginning def moveSpaceInFront(s): # Keep copying non-space characters i = len(s) - 1; for j in range(i, -1, -1): if (s[j] != ' '): s = s[:i] + s[j] + s[i + 1:] i -= 1; # Move spaces to be beginning while (i >= 0): s = s[:i] + ' ' + s[i + 1:] i -= 1 return s; # Driver code s = "Hey there, it's GeeksforGeeks"; s = moveSpaceInFront(s); print(s); # This code is contributed # by Princi Singh
C#
// C# program to bring all spaces in front of // string using swapping technique using System; class GFG { // Function to find spaces and move to beginning static void moveSpaceInFront(char []str) { // Keep copying non-space characters int i = str.Length-1; for (int j = i; j >= 0; j--) if (str[j] != ' ') str[i--] = str[j]; // Move spaces to be beginning while (i >= 0) str[i--] = ' '; } // Driver code public static void Main(String[] args) { char []str = "Hey there, it's GeeksforGeeks". ToCharArray(); moveSpaceInFront(str); Console.WriteLine(String.Join("",str)); } } // This code is contributed by Rajput-Ji
Javascript
<script> // JavaScript program to bring all spaces // in front of string using swapping technique // Function to find spaces and move to beginning function moveSpaceInFront(str) { // Keep copying non-space characters var i = str.length - 1; for(var j = i; j >= 0; j--) if (str[j] !== " ") str[i--] = str[j]; // Move spaces to be beginning while (i >= 0) str[i--] = " "; } // Driver code var str = "Hey there, it's GeeksforGeeks".split(""); moveSpaceInFront(str); document.write(str.join("")); // This code is contributed by rdtank </script>
Heythere,it'sGeeksforGeeks
Complejidad temporal-: O(n)
Espacio auxiliar -:O(1)
Este artículo es una contribución de SAKSHI TIWARI . Si te gusta GeeksforGeeks (¡sabemos que te gusta!) y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA