Advertisement
Tkap1

Untitled

Jul 4th, 2021
1,325
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.32 KB | None | 0 0
  1.  
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <math.h>
  5.  
  6. int find_similar(char* str1, char* str2);
  7.  
  8. int main(int argc, char** argv)
  9. {
  10.    
  11.     printf("%i\n", find_similar("FifthOfNovember", "September"));
  12.     printf("%i\n", find_similar("Seventh", "September"));
  13.     printf("%i\n", find_similar("JustForExample", "notEx"));
  14. }
  15.  
  16.  
  17. int find_similar(char* str1, char* str2)
  18. {
  19.     size_t str1_len = strlen(str1);
  20.     size_t str2_len = strlen(str2);
  21.    
  22.     if(str2_len > str1_len) { return -1; }
  23.    
  24.     int found = -1;
  25.    
  26.     for(int i = 0; i < str1_len; i++)
  27.     {
  28.         int similar = 0;
  29.         found = -1;
  30.         int* already_matched = calloc(1, str1_len);
  31.         int matched_count = 0;
  32.         for(int j = 0; j < str2_len; j++)
  33.         {
  34.             char c2 = str2[j];
  35.             found = i;
  36.             for(int k = i; k < str2_len + i; k++)
  37.             {
  38.                 if(k >= str1_len) { break; }
  39.                
  40.                 int skip_this_character = 0;
  41.                 for(int l = 0; l < matched_count; l++)
  42.                 {
  43.                     if(k == already_matched[l])
  44.                     {
  45.                         skip_this_character = true;
  46.                         break;
  47.                     }
  48.                 }
  49.                 if(skip_this_character) { continue; }
  50.                
  51.                 char c1 = str1[k];
  52.                 if(c1 == c2)
  53.                 {
  54.                     already_matched[matched_count++] = k;
  55.                     similar++;
  56.                     break;
  57.                 }
  58.             }
  59.         }
  60.         free(already_matched);
  61.        
  62.         if(similar > str2_len / 2)
  63.         {
  64.             break;
  65.         }
  66.         else
  67.         {
  68.             found = -1;
  69.         }
  70.     }
  71.    
  72.     return found;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement