Given a string, remove all spaces from the string and return it.
Input: "g eeks for ge eeks "
Output: "geeksforgeeks"
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>
|
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>
|
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 geeksforgeeks
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
Please Login to comment...