Move spaces to front of string in single traversal

11 Jul, 2022
Given a string that has set of words and spaces, write a program to move all spaces to front of string, by traversing the string only once.
Examples: 
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. 
Method 1 (Using Swap): Idea is to maintain two indices i and j. Traverse from end to beginning. If the current index contains space, swap chars in index i with index j. This will bring all spaces to beginning of the array.  
Implementation:
C++
Java
Python3
C#
Javascript
// 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 beginningvoid 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 codeint main(){    char str[] = "Hey there, it's GeeksforGeeks";    moveSpaceInFront(str);    cout << str;    return 0;}
// Java program to bring all spaces in front of// string using swapping techniqueclass 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 program to bring all spaces# in front of string using swapping technique # Function to find spaces and move to beginningdef 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 codes = "Hey there, it's GeeksforGeeks";s = moveSpaceInFront(s);print(s); # This code is contributed# by Princi Singh
// C# program to bring all spaces in front of// string using swapping techniqueusing 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
<script> // Javascript program to bring all spaces// in front of string using swapping technique // Function to find spaces and move to beginningfunction 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 codelet str = "Hey there, it's GeeksforGeeks".split("");moveSpaceInFront(str); document.write((str).join("")); // This code is contributed by rag2127 </script>
   Heythere,it'sGeeksforGeeks
Time complexity-: O(n) Auxiliary Space-: O(1) Method 2 (Without using swap): The idea is to copy all non-space characters to end. Finally copy spaces. 
Implementation:
C++
Java
Python3
C#
Javascript
// 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 beginningvoid 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 codeint main(){    char str[] = "Hey there, it's GeeksforGeeks";    moveSpaceInFront(str);    cout << str;    return 0;}
// Java program to bring all spaces in front of// string using swapping techniqueclass GFG{ // Function to find spaces and move to beginningstatic 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 codepublic 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 program to bring all spaces# in front of string using swapping technique # Function to find spaces and# move to beginningdef 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 codes = "Hey there, it's GeeksforGeeks";s = moveSpaceInFront(s);print(s); # This code is contributed# by Princi Singh
// C# program to bring all spaces in front of// string using swapping techniqueusing System; class GFG{ // Function to find spaces and move to beginningstatic 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 codepublic 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
<script> // JavaScript program to bring all spaces// in front of string using swapping technique // Function to find spaces and move to beginningfunction 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 codevar str = "Hey there, it's GeeksforGeeks".split("");moveSpaceInFront(str);document.write(str.join("")); // This code is contributed by rdtank </script>
   Heythere,it'sGeeksforGeeks
Time complexity-: O(n) Auxiliary Space -:O(1)
This article is contributed by SAKSHI TIWARI. If you like GeeksforGeeks(We know you do!) and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. 
29AjayKumar
princiraj1992
Rajput-Ji
princi singh
rdtank
rag2127
simmytarika5
hardikkoriintern
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.