char sau clasa std::string. Pentru Bacalaureat, trebuie cunoscute funcțiile predefinite din <cstring> (precum strlen, strcpy, strcat, strcmp) și metodele clasei std::string (.length(), .find(), .substr(), operatorul +). Conceptele de palindrom și anagramă se verifică prin algoritmi specifici: compararea caracterelor simetrice, respectiv sortarea sau numărarea frecvenței caracterelor.
char terminate cu caracterul null ('\0')
- Clasa std::string din biblioteca standard
<cstring>strlen(s) – returnează lungimea șirului (fără terminatorul null)strcpy(dest, src) – copiază un șir în altulstrcat(dest, src) – concatenează șirul sursă la sfârșitul destinațieistrcmp(s1, s2) – compară lexicografic două șiruri:0 dacă sunt egale
- Returnează <0 dacă s1 < s2
- Returnează >0 dacă s1 > s2
std::string.length() și .size() – returnează lungimea șirului.find() – caută un subșir în șir.substr() – extrage un subșir+ – pentru concatenare"capac", "12321")- Se ignoră eventualele spații sau semne de punctuație
- Pentru eficiență, se folosește un algoritm cu doi indici (left, right)
s. Se determină lungimea n = strlen(s). Se parcurge cu i de la 0 la n/2-1 și se compară s[i] cu s[n-1-i]. Dacă toate perechile sunt egale, cuvântul este palindrom.int palindrom = 1; for(int i=0; i<strlen(s)/2; i++) if(s[i] != s[strlen(s)-1-i]) { palindrom = 0; break; }
"ram" și "mar")- Vectorul de frecvență – se numără frecvența fiecărui caracter (folosind un vector de 26 de elemente pentru litere mici)
s1 și s2. Se creează un vector de frecvență frecv[26] inițializat cu 0. Se parcurge s1 și se incrementează frecv[s1[i]-'a']; se parcurge s2 și se decrementează frecv[s2[i]-'a']. La final, dacă toate valorile din frecv sunt 0, cuvintele sunt anagrame. Atenție: cuvintele trebuie să aibă aceeași lungime.std::string – exemplu"abc" cu "xyz".find() într-un while:size_t pos = 0; while ((pos = s.find("abc", pos)) != string::npos) { s.replace(pos, 3, "xyz"); pos += 3; }
strcmp(s1, s2) atunci când s1 este mai mic lexicografic decât s2?Vrei exerciții pe lecția asta + AI care te ajută pas cu pas?
Cont gratuit — 20 întrebări AI/zi, exerciții nelimitate.