Mover espacios al frente de la string en un solo recorrido

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>
Producción

   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>
Producción

   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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *