Given a string, remove all spaces from the string and return it.
Input: "g eeks for ge eeks "
Output: "neveropen"
Expected time complexity is O(n) and only one traversal of string.
Below is a Simple Solution
1) Iterate through all characters of given string, do following
a) If current character is a space, then move all subsequent
characters one position back and decrease length of the
result string.
Time complexity of above solution is O(n2).
A Better Solution can solve it in O(n) time. The idea is to keep track of count of non-space character seen so far.
1) Initialize 'count' = 0 (Count of non-space character seen so far)
2) Iterate through all characters of given string, do following
a) If current character is non-space, then put this character
at index 'count' and increment 'count'
3) Finally, put '\0' at index 'count'
Below is the implementation of above algorithm.
C++
#include <iostream>
using namespace std;
void removeSpaces( char *str)
{
int count = 0;
for ( int i = 0; str[i]; i++)
if (str[i] != ' ' )
str[count++] = str[i];
str[count] = '\0' ;
}
int main()
{
char str[] = "g eeks for ge eeks " ;
removeSpaces(str);
cout << str;
return 0;
}
|
Java
class GFG
{
static int removeSpaces( char []str)
{
int count = 0 ;
for ( int i = 0 ; i<str.length; i++)
if (str[i] != ' ' )
str[count++] = str[i];
return count;
}
public static void main(String[] args)
{
char str[] = "g eeks for ge eeks " .toCharArray();
int i = removeSpaces(str);
System.out.println(String.valueOf(str).subSequence( 0 , i));
}
}
|
Python
def removeSpaces(string):
count = 0
list = []
for i in xrange ( len (string)):
if string[i] ! = ' ' :
list .append(string[i])
return toString( list )
def toString( List ):
return ''.join( List )
string = "g eeks for ge eeks "
print removeSpaces(string)
|
C#
using System;
class GFG
{
static int removeSpaces( char []str)
{
int count = 0;
for ( int i = 0; i < str.Length; i++)
if (str[i] != ' ' )
str[count++] = str[i];
return count;
}
public static void Main(String[] args)
{
char []str = "g eeks for ge eeks " .ToCharArray();
int i = removeSpaces(str);
Console.WriteLine(String.Join( "" , str).Substring(0, i));
}
}
|
Javascript
<script>
function removeSpaces(str) {
var count = 0;
for ( var i = 0; i < str.length; i++)
if (str[i] !== " " ) str[count++] = str[i];
return count;
}
var str = "g eeks for ge eeks " .split( "" );
var i = removeSpaces(str);
document.write(str.join( "" ).substring(0, i));
</script>
|
Output
neveropenforgeeeks
Time complexity of above solution is O(n) and it does only one traversal of string.
Auxiliary Space: O(1)
Another solution suggested by Divyam Madaan is to use predefined functions. Here is the implementation:
C++
#include <iostream>
#include <algorithm>
using namespace std;
string removeSpaces(string str)
{
str.erase( remove (str.begin(), str.end(), ' ' ), str.end());
return str;
}
int main()
{
string str = "g eeks for ge eeks " ;
str = removeSpaces(str);
cout << str;
return 0;
}
|
Java
class GFG {
static String removeSpace(String str)
{
str = str.replaceAll( "\\s" , "" );
return str;
}
public static void main(String args[])
{
String str = "g eeks for ge eeks " ;
System.out.println(removeSpace(str));
}
}
|
Python
def removeSpaces(string):
string = string.replace( ' ' ,'')
return string
string = "g eeks for ge eeks "
print (removeSpaces(string))
|
C#
using System;
class GFG
{
static String removeSpace(String str)
{
str = str.Replace( " " , "" );
return str;
}
public static void Main()
{
String str = "g eeks for ge eeks " ;
Console.WriteLine(removeSpace(str));
}
}
|
Javascript
<script>
function removeSpace( str)
{
str = str.replace(/\s/g, '' )
return str;
}
var str = "g eeks for ge eeks " ;
document.write(removeSpace(str));
</script>
|
Output
neveropenforgeeeks
Another method to solve this problem using predefined STL functions like count() ,remove() ,getline() and resize() is also present. Here is the implementation for the same :
C++
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s = "g e e k s f o r g e e k s" ;
cout << "string with spaces is " << s << endl;
int l = s.length();
int c
= count(s.begin(), s.end(),
' ' );
remove (s.begin(), s.end(),
' ' );
s.resize(l - c);
cout << "string without spaces is " << s << endl;
return 0;
}
|
Java
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
String s = "g e e k s f o r g e e k s" ;
System.out.println( "string with spaces is " + s);
int l = s.length();
int c = ( int ) s.chars().filter(ch -> ch == ' ' ).count();
s = s.replace( " " , "" );
s = s.substring( 0 , l - c);
System.out.println( "string without spaces is " + s);
}
}
|
C#
using System;
public class GFG {
public static void Main( string [] args) {
string s = "g e e k s f o r g e e k s" ;
Console.WriteLine( "string with spaces is " + s);
int l = s.Length;
int c = s.Split( ' ' ).Length - 1;
s = s.Replace( " " , "" );
s = s.Substring(0, l - c);
Console.WriteLine( "string without spaces is " + s);
}
}
|
Python3
s = "g e e k s f o r g e e k s"
print ( "string with spaces is" , s)
l = len (s)
c = s.count( ' ' )
s = s.replace( ' ' , '')
s = s[:l - c]
print ( "string without spaces is" , s)
|
Javascript
let s = "g e e k s f o r g e e k s" ;
console.log( "string with spaces is " + s);
let l = s.length;
let c = s.split( ' ' ).length - 1;
s = s.replace(/\s/g, "" );
s = s.substring(0, l - c);
console.log( "string without spaces is " + s);
|
Output
string with spaces is g e e k s f o r g e e k s
string without spaces is neveropen
Time Complexity : O(N), N is length of given string.
Auxiliary Space : O(1), since no extra space is used.
Thanks to Souravi Sarkar for suggesting this problem and initial solution.
Java | Removing whitespaces using Regex
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!