282
Cerința
Scrieți funcția având următorul antet:
void ReverseWords(char s[])
Funcția primește ca parametru un șir s
format din cuvinte separate prin câte un spațiu. Cuvintele sunt formate doar din litere mici. Funcția va returna, tot prin intermediul parametrului s
, cuvintele în ordine inversă, separate tot prin câte un spațiu.
Exemplu
Dup[ apelul ReverseWords("dubai dubai viata ca in rai")
șirul s
va fi rai in ca viata dubai dubai
Restricții și precizări
- Lungimea șirului
s
este de cel mult800.000
și conține cel puțin două cuvinte - șirul poate conține cuvinte de o literă
- cuvintele din șir sunt separate prin exact un spațiu
- șirul este indexat de la
0
, începe cu o literă și se termină cu o literă
void ReverseWords(char s[]){ int i = 0, j = 0, cnt = 0; while(s[i]){ if(s[i] == ' '){ j = cnt; cnt = i - 1; int cpy = cnt; while(j < cnt) swap(s[j], s[cnt]), cnt --, j ++; cnt = cpy + 2; } i++; } j = cnt; cnt = i - 1; int cpy = cnt; while(j < cnt) swap(s[j], s[cnt]), cnt --, j ++; cnt = cpy + 2; int a = 0, b = i - 1; while(a < b) swap(s[a], s[b]), a ++, b --; }
Comentarii