Informatică, întrebare adresată de anamarialix, 8 ani în urmă

Cerință:
Pentru un șir de caractere, să se tipărească pe ecran cuvântul DA sau NU dacă acest șir poate fi rearanjat astfel încât să fie un palindrom.
Constrangeri:
Poate fi folosite doar caractere din alfabetul latin cu litere mici
Date de intrare:
Șirul de caractere.
Exemplu:
INPUT:
aaabbbb
OUTPUT:
DA

Răspunsuri la întrebare

Răspuns de VxF
3

Răspuns:

#include <iostream>

#include <cstring>

int main()

{

   int inventar['z' - 'a' + 1] = {0};

   std::string sir;

   int nrImpare = 0;

   std::cout << "Șir: ";

   std::cin >> sir;

   for (int i = 0; i < sir.length(); i++) {

       inventar[sir[i] - 'a']++;

   }

  for (int i = 0; i <= 26; i++) {

       if (inventar[i] % 2) {

           nrImpare++;

       }

   }

   std::cout << (nrImpare <= 1 ? "DA" : "NU") << std::endl;

}

Explicație:

În palindrom toate literele trebuie să figureze în perechi, cu excepţia literei din mijloc în cazul unui șir de lungime impară.

  • Numeri câte exemplare sunt din fiecare literă
  • Numeri câte litere au număr de exemplare impar

Poate fi palindrom dacă numai o literă sau nici o literă are număr de exemplare impar.

Alte întrebări interesante