Open In App

Move spaces to front of string in single traversal

Last Updated : 11 Oct, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

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 : str = "  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++
// 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>

Output
   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++
// 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--] = "&nbsp;";
}

// Driver code
var str = "Hey there, it's GeeksforGeeks".split("");
moveSpaceInFront(str);
document.write(str.join(""));

// This code is contributed by rdtank

</script>

Output
   Heythere,it'sGeeksforGeeks

Time complexity-: O(n) 
Auxiliary Space -:O(1)

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 [email protected].  


Next Article
Article Tags :
Practice Tags :

Similar Reads