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 geeksRekomenduojama: 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: %sn' str); result = replaceWord(str c d); printf('New String: %sn' 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('nModified string: %s' str); return 0; }
Įvestis: 1 xxforxx xx for xx xx geeksIšvestis:
geeksforgeeks geeks for geeks
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(1)