Drukājiet divu virkņu parastās rakstzīmes alfabētiskā secībā

Drukājiet divu virkņu parastās rakstzīmes alfabētiskā secībā
Izmēģiniet to GfG Practice

Dotās divas virknes izdrukā visas parastās rakstzīmes leksikogrāfisks pasūtījums. Ja nav kopīgu burtu, drukājiet -1. Visi burti ir mazie burti. 
 

Piemēri:  

  Input :    string1 : geeks string2 : forgeeks   Output :   eegks   Explanation:   The letters that are common between the two strings are e(2 times) k(1 time) and s(1 time). Hence the lexicographical output is 'eegks'   Input :    string1 : hhhhhello string2 : gfghhmh   Output :   hhh 

Ideja ir izmantot rakstzīmju skaita masīvus. 

  1. Uzskaitiet visas rakstzīmes no “a” līdz “z” pirmajā un otrajā virknē. Saglabājiet šos skaitļus divos masīvos a1[] un a2[]. 
  2. Travers a1[] un a2[] (piezīmes izmērs abiem ir 26). Katram indeksam i tiek izdrukāta rakstzīme 'a' + i reižu skaits, kas vienāds ar min(a1[i] a2[i]).

Zemāk ir aprakstīta iepriekš minēto darbību īstenošana. 

C++
   // C++ program to print common characters   // of two Strings in alphabetical order   #include       using     namespace     std  ;   int     main  ()   {      string     s1     =     'geeksforgeeks'  ;      string     s2     =     'practiceforgeeks'  ;          // to store the count of       // letters in the first string      int     a1  [  26  ]     =     {  0  };          // to store the count of       // letters in the second string      int     a2  [  26  ]     =     {  0  };      int     i          j  ;      char     ch  ;      char     ch1     =     'a'  ;      int     k     =     (  int  )  ch1       m  ;          // for each letter present increment the count      for  (  i     =     0     ;     i      <     s1  .  length  ()     ;     i  ++  )      {         a1  [(  int  )  s1  [  i  ]     -     k  ]  ++  ;      }      for  (  i     =     0     ;     i      <     s2  .  length  ()     ;     i  ++  )      {      a2  [(  int  )  s2  [  i  ]     -     k  ]  ++  ;      }      for  (  i     =     0     ;     i      <     26     ;     i  ++  )      {      // the if condition guarantees that       // the element is common that is       // a1[i] and a2[i] are both non zero      // means that the letter has occurred      // at least once in both the strings      if     (  a1  [  i  ]     !=     0     and     a2  [  i  ]     !=     0  )      {      // print the letter for a number      // of times that is the minimum       // of its count in s1 and s2      for  (  j     =     0     ;     j      <     min  (  a1  [  i  ]          a2  [  i  ])     ;     j  ++  )      {      m     =     k     +     i  ;      ch     =     (  char  )(  k     +     i  );         cout      < <     ch  ;         }      }      }      return     0  ;   }      
Java
   // Java program to print common characters   // of two Strings in alphabetical order   import     java.io.*  ;   import     java.util.*  ;   // Function to find similar characters   public     class   Simstrings   {      static     final     int     MAX_CHAR     =     26  ;      static     void     printCommon  (  String     s1       String     s2  )      {      // two arrays of length 26 to store occurrence      // of a letters alphabetically for each string      int  []     a1     =     new     int  [  MAX_CHAR  ]  ;      int  []     a2     =     new     int  [  MAX_CHAR  ]  ;      int     length1     =     s1  .  length  ();      int     length2     =     s2  .  length  ();      for     (  int     i     =     0     ;     i      <     length1     ;     i  ++  )      a1  [  s1  .  charAt  (  i  )     -     'a'  ]     +=     1  ;      for     (  int     i     =     0     ;     i      <     length2     ;     i  ++  )      a2  [  s2  .  charAt  (  i  )     -     'a'  ]     +=     1  ;      // If a common index is non-zero it means      // that the letter corresponding to that      // index is common to both strings      for     (  int     i     =     0     ;     i      <     MAX_CHAR     ;     i  ++  )      {      if     (  a1  [  i  ]     !=     0     &&     a2  [  i  ]     !=     0  )      {      // Find the minimum of the occurrence      // of the character in both strings and print      // the letter that many number of times      for     (  int     j     =     0     ;     j      <     Math  .  min  (  a1  [  i  ]       a2  [  i  ]  )     ;     j  ++  )      System  .  out  .  print  (((  char  )(  i     +     'a'  )));      }      }      }      // Driver code      public     static     void     main  (  String  []     args  )     throws     IOException      {      String     s1     =     'geeksforgeeks'       s2     =     'practiceforgeeks'  ;      printCommon  (  s1       s2  );      }   }   
Python3
   # Python3 program to print common characters   # of two Strings in alphabetical order   # Initializing size of array   MAX_CHAR  =  26   # Function to find similar characters   def   printCommon  (   s1     s2  ):   # two arrays of length 26 to store occurrence   # of a letters alphabetically for each string   a1   =   [  0   for   i   in   range  (  MAX_CHAR  )]   a2   =   [  0   for   i   in   range  (  MAX_CHAR  )]   length1   =   len  (  s1  )   length2   =   len  (  s2  )   for   i   in   range  (  0    length1  ):   a1  [  ord  (  s1  [  i  ])   -   ord  (  'a'  )]   +=   1   for   i   in   range  (  0    length2  ):   a2  [  ord  (  s2  [  i  ])   -   ord  (  'a'  )]   +=   1   # If a common index is non-zero it means   # that the letter corresponding to that   # index is common to both strings   for   i   in   range  (  0    MAX_CHAR  ):   if   (  a1  [  i  ]   !=   0   and   a2  [  i  ]   !=   0  ):   # Find the minimum of the occurrence   # of the character in both strings and print   # the letter that many number of times   for   j   in   range  (  0    min  (  a1  [  i  ]  a2  [  i  ])):   ch   =   chr  (  ord  (  'a'  )  +  i  )   print   (  ch     end  =  ''  )   # Driver code   if   __name__  ==  '__main__'  :   s1   =   'geeksforgeeks'   s2   =   'practiceforgeeks'   printCommon  (  s1     s2  );   # This Code is contributed by Abhishek Sharma   
C#
   // C# program to print common characters   // of two Strings in alphabetical order   using     System  ;   // Function to find similar characters   public     class     Simstrings   {      static     int     MAX_CHAR     =     26  ;          static     void     printCommon  (  string     s1       string     s2  )      {      // two arrays of length 26 to store occurrence      // of a letters alphabetically for each string      int  []     a1     =     new     int  [  MAX_CHAR  ];      int  []     a2     =     new     int  [  MAX_CHAR  ];          int     length1     =     s1  .  Length  ;      int     length2     =     s2  .  Length  ;          for     (  int     i     =     0     ;     i      <     length1     ;     i  ++  )      a1  [  s1  [  i  ]     -     'a'  ]     +=     1  ;          for     (  int     i     =     0     ;     i      <     length2     ;     i  ++  )      a2  [  s2  [  i  ]     -     'a'  ]     +=     1  ;          // If a common index is non-zero it means      // that the letter corresponding to that      // index is common to both strings      for     (  int     i     =     0     ;     i      <     MAX_CHAR     ;     i  ++  )      {      if     (  a1  [  i  ]     !=     0     &&     a2  [  i  ]     !=     0  )      {      // Find the minimum of the occurrence      // of the character in both strings and print      // the letter that many number of times      for     (  int     j     =     0     ;     j      <     Math  .  Min  (  a1  [  i  ]     a2  [  i  ])     ;     j  ++  )      Console  .  Write  (((  char  )(  i     +     'a'  )));      }      }      }          // Driver code      public     static     void     Main  ()      {      string     s1     =     'geeksforgeeks'       s2     =     'practiceforgeeks'  ;      printCommon  (  s1       s2  );      }   }   
JavaScript
    <  script  >   // Javascript program to print common characters   // of two Strings in alphabetical order          let     MAX_CHAR     =     26  ;      // Function to find similar characters      function     printCommon  (  s1    s2  )      {      // two arrays of length 26 to store occurrence      // of a letters alphabetically for each string      let     a1     =     new     Array  (  MAX_CHAR  );      let     a2     =     new     Array  (  MAX_CHAR  );      for  (  let     i  =  0  ;  i   <  MAX_CHAR  ;  i  ++  )      {      a1  [  i  ]  =  0  ;      a2  [  i  ]  =  0  ;      }          let     length1     =     s1  .  length  ;      let     length2     =     s2  .  length  ;          for     (  let     i     =     0     ;     i      <     length1     ;     i  ++  )      a1  [  s1  [  i  ].  charCodeAt  (  0  )     -     'a'  .  charCodeAt  (  0  )]     +=     1  ;          for     (  let     i     =     0     ;     i      <     length2     ;     i  ++  )      a2  [  s2  [  i  ].  charCodeAt  (  0  )     -     'a'  .  charCodeAt  (  0  )]     +=     1  ;          // If a common index is non-zero it means      // that the letter corresponding to that      // index is common to both strings      for     (  let     i     =     0     ;     i      <     MAX_CHAR     ;     i  ++  )      {      if     (  a1  [  i  ]     !=     0     &&     a2  [  i  ]     !=     0  )      {      // Find the minimum of the occurrence      // of the character in both strings and print      // the letter that many number of times      for     (  let     j     =     0     ;     j      <     Math  .  min  (  a1  [  i  ]     a2  [  i  ])     ;     j  ++  )      document  .  write  ((  String  .  fromCharCode  (  i     +     'a'  .  charCodeAt  (  0  ))));      }      }      }          // Driver code      let     s1     =     'geeksforgeeks'       s2     =     'practiceforgeeks'  ;      printCommon  (  s1       s2  );                  // This code is contributed by avanitrachhadiya2155    <  /script>   

Izvade
eeefgkors 

Laika sarežģītība: Ja mēs uzskatām, ka n = garums (lielāka virkne), darbojas šis algoritms O(n) sarežģītība. 
Palīgtelpa: O(1).

Izveidojiet viktorīnu