Home » Interview Questions » String Interview Questions » Remove characters from first string which are in second

Remove characters from first string which are in second


()

For the given input strings, remove the characters from the first string which are present in second string. (with case sensitivity)

Example

a) Input string1 : computer
Input string2 : cat

Output : ompuer
After removing characters from string2 (c, a, t) from string1 we get ompuer

b) Input string1 : occurrence
Input string2 : car
Output : ouene

After removing characters from string2 (c, a, r) from string1 we get ouene

Time complexity : O(m + n), m and n are length of strings

Algorithm

a. Get count array from the second string which stores the count of chars from the second string.

b. Check in the input string if it contains characters from count array with frequency > 0 if yes skip it and copy remaining char into input string.

c. After getting this add \0 to remove any extra characters after output string
(Null termination).

Note : \0 means Null ASCII value 0)

Algorithm working

C++ Program

#include <bits/stdc++.h>

using namespace std;
#define ASCII_SIZE 256
 
//Remove characters from string1 which are in string2
char *RemoveChars(char *string1, char *string2)
{
  //Count array stores the count of chars from string2
  int *count = (int *)calloc(sizeof(int), ASCII_SIZE);
  for(int i = 0; *(string2+i);  i++)
  {
      count[*(string2+i)]++;
  }
  int i  = 0, j = 0;
  while(*(string1 + i))
  {
    char temp = *(string1 + i);
    //If count of charcter is zero add to output
    if(count[temp] == 0)
    {
        *(string1 + j) = *(string1 + i);
        j++;
    }
    i++;
  }    
 //Null termination 
  //removing extra characters
  *(string1+j) = '\0';    
 
  return string1;
}
 
//Main function to test above function
int main()
{
    //string1
    char string1[]  = "computer";
    //string2
    char string2[]  = "programming";
    cout<<"Input strings:\n";
    cout<<"string1: ";
    for (int i = 0; i < strlen(string1); ++i)
    {
      cout<<string1[i];
    }
    cout<<"\nstring2: ";
    for (int i = 0; i < strlen(string2); ++i)
    {
      cout<<string2[i];
    }
    //print output string
    cout<<"\nOutput: ";
    cout<<RemoveChars(string1, string2);
    return 0;
}

Try It

READ  Isomorphic Strings

 

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote Count

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Array Interview Questions
Graph Interview Questions
LinkedList Interview Questions
String Interview Questions
Tree Interview Questions