Remove characters from the first string that are in the second string in C++

In this tutorial, we will learn to remove the characters from the string are in the second string in C++.

Algorithm:

  • Firstly, there are two input strings.
  • Now initialize input_index = 0 to keep track of each character of input-output string.
  • Initialize result_index=0 to keep track of each character of resultant string.
  • Now construct an array named countarr.
  • Here we will use a boolean array instead of int array because we don’t need the count of it, we need to know if the character is present in the string or not.
  • So it will return a boolean value.
  • Now we will traverse to each character of the string. If the count array will return 0, then only return this character to the resultant string.
  • The time complexity of this approach is O(a+b) where a is the length of the first input string and b is the length of the second input string.

For Example:

  • First string= “greatachievement”
  • second string=” ate”
  • resultant string =” grchivmn”

You may also like:
How to remove or eliminate the extra spaces from a given string in C++

C++ program to remove characters from the first string that are in the second string

Hence, you can see the implementation below of the above approach.

#include<iostream>
using namespace std;

#define Number_Char 256 

int *Countarr(char *first_string) 
{ 
int *count = (int *)calloc(sizeof(int), Number_chars); 
int i; 
for (i = 0; *(first_string+i); i++) 
  count[*(first_string+i)]++; 
return count; 
} 


char *removechar(char *first_string, char *second_string) 
{ 
int *count =Countarr(second_string); 
int input_index = 0, result_index = 0; 
while (*(first_string + input_index)) 
{ 
  char temp = *(first_string + input_index); 
  if (count[temp] == 0) 
  { 
    *(first_string + result_index) = *(first_string + input_index); 
    result_index++; 
  } 
  input_index++; 
}	 

*(first_string+result_index) = '\0';	 

return first_string; 
} 

int main() 
{ 
  char first_string[]= "greatachivement"; 
  char second_string [] = "ate"; 
  cout<< removechar(first_string, second_string)); 
  return 0; 
} 

OUTPUT EXPLANATION:

INPUT: first_string=" greatachievement"
               second_string=" ate"
OUTPUT: "grchivmn"

Leave a Reply

Your email address will not be published.