İkincidə olan simvolları birinci sətirdən silin


SimBaxılıb 899

Verilən giriş sətirləri üçün ikinci sətirdə olan simvolları birinci sətirdən silin. (hal həssaslığı ilə)

misal

a) Sətir 1: kompüter
Giriş sətri2: pişik

Çıxış: səssizləşdirici
String2-dən (c, a, t) simvolları string1-dən çıxardıqdan sonra ompuer əldə edirik

b) Giriş sətri1: baş vermə
Giriş sətri2: avtomobil
Çıxış: ouene

String2-dən (c, a, r) ​​simvolları string1-dən çıxardıqdan sonra ouene əldə edirik

Zamanın mürəkkəbliyi: O (m + n), m və n simlərin uzunluğudur

Alqoritm

a. İkinci sətirdən işarələrin sayını saxlayan ikinci sətirdən say massivi alın.

b. Giriş sətirində, sayı massivindən> 0 tezliyi olan simvollar varsa, yoxlayın, əgər keçin və qalan sətri giriş sətrinə kopyalayın.

c. Bu çıxdıqdan sonra əlavə simvolları silmək üçün \ 0 əlavə edin
(Sıfır xitam).

Qeyd: \ 0 Null ASCII dəyəri 0 deməkdir)

Alqoritm işləyir

C ++ Proqramı

#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;
}

Yoxla

 

Şərh yaz

Translate »