C Programa pakeisti žodį tekste kitu duotu žodžiu

Duotos trys eilutės „str“ „oldW“ ir „newW“. Užduotis yra surasti visus žodžio „oldW“ atvejus ir pakeisti tada žodžiu „newW“. Pavyzdžiai:

Input : str[] = 'xxforxx xx for xx' oldW[] = 'xx' newW[] = 'geeks' Output : geeksforgeeks geeks for geeks 
Rekomenduojama: išspręskite PRAKTIKA pirmiausia prieš pereinant prie sprendimo.

Idėja yra pereiti pradinę eilutę ir suskaičiuoti, kiek kartų eilutėje atsiranda senas žodis. Dabar sukurkite naują pakankamo dydžio eilutę, kad būtų galima pakeisti naują žodį. Dabar nukopijuokite pradinę eilutę į naują eilutę pakeisdami žodį. 

Įgyvendinimas:

C
   // C program to search and replace    // all occurrences of a word with    // other word.    #include            #include            #include            // Function to replace a string with another    // string    char  *     replaceWord  (  const     char  *     s       const     char  *     oldW           const     char  *     newW  )      {         char  *     result  ;         int     i       cnt     =     0  ;         int     newWlen     =     strlen  (  newW  );         int     oldWlen     =     strlen  (  oldW  );         // Counting the number of times old word       // occur in the string       for     (  i     =     0  ;     s  [  i  ]     !=     ''  ;     i  ++  )     {         if     (  strstr  (  &  s  [  i  ]     oldW  )     ==     &  s  [  i  ])     {         cnt  ++  ;         // Jumping to index after the old word.       i     +=     oldWlen     -     1  ;         }         }         // Making new string of enough length       result     =     (  char  *  )  malloc  (  i     +     cnt     *     (  newWlen     -     oldWlen  )     +     1  );         i     =     0  ;         while     (  *  s  )     {         // compare the substring with the result       if     (  strstr  (  s       oldW  )     ==     s  )     {         strcpy  (  &  result  [  i  ]     newW  );         i     +=     newWlen  ;         s     +=     oldWlen  ;         }         else      result  [  i  ++  ]     =     *  s  ++  ;         }         result  [  i  ]     =     ''  ;         return     result  ;      }      // Driver Program    int     main  ()      {         char     str  []     =     'xxforxx xx for xx'  ;         char     c  []     =     'xx'  ;         char     d  []     =     'Geeks'  ;         char  *     result     =     NULL  ;         // oldW string       printf  (  'Old string: %s  n  '       str  );         result     =     replaceWord  (  str       c       d  );         printf  (  'New String: %s  n  '       result  );         free  (  result  );         return     0  ;      }      
Išvestis:
Old string: xxforxx xx for xx New String: GeeksforGeeks Geeks for Geeks 

Laiko sudėtingumas : O(n)
Pagalbinė erdvė: O(n)

2 būdas: Šis metodas apima eilutės atnaujinimą vietoje. Jis yra efektyvesnis, nes sunaudoja tik papildomos vietos naujiems simboliams įterpti. 

Įgyvendinimas:

C
   // C Program to replace a word in a text by another given   // word by inplace updation   #include         #include         #include         void     replaceWord  (  char  *     str       char  *     oldWord       char  *     newWord  )   {      char     *  pos       temp  [  1000  ];      int     index     =     0  ;      int     owlen  ;      owlen     =     strlen  (  oldWord  );      // Repeat This loop until all occurrences are replaced.      while     ((  pos     =     strstr  (  str       oldWord  ))     !=     NULL  )     {      // Bakup current line      strcpy  (  temp       str  );      // Index of current found word      index     =     pos     -     str  ;      // Terminate str after word found index      str  [  index  ]     =     ''  ;      // Concatenate str with new word      strcat  (  str       newWord  );      // Concatenate str with remaining words after      // oldword found index.      strcat  (  str       temp     +     index     +     owlen  );      }   }   int     main  ()   {      char     str  [  1000  ]     oldWord  [  100  ]     newWord  [  100  ];      printf  (  'Enter the string: '  );      gets  (  str  );      printf  (  'Enter the word to be replaced: '  );      gets  (  oldWord  );      printf  (  'Replace with: '  );      gets  (  newWord  );      replaceWord  (  str       oldWord       newWord  );      printf  (  '  n  Modified string: %s'       str  );      return     0  ;   }   
Įvestis:
1 xxforxx xx for xx xx geeks 
Išvestis:
geeksforgeeks geeks for geeks 

Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(1)

Sukurti viktoriną