palindroma
1/17/2021, 7:27:10 PM 1/17/2021, 7:27:10 PM

Stringa palindroma in c++

Data una stringa, verificheremo se si parla di una stringa palindroma o meno

Uno dei esercizi più comuni quando si sta imparando a programmare con le stringe, è verificare se una stringa è palindroma oppure no.
Prima di tutto diamo una definizione:
palindroma «all’indietro, all’inverso», una stringa si dice palindroma quando risulta uguale al suo inverso. Per una descrizione più accurata consiglio Def. Palindroma

Capito cosa sia una stringa palindroma non resta altro che trasformare la nostra idea in codice.

Data una stringa in input verificare se è palindroma

Prima di tutto definiamo una funzione che ci ritorni true o false a seconda se si sta parlando di una stinga palindroma o no

bool isPalindroma(string str){
  for(int i = 0, _i = str.length()-1; i< str.length() / 2; i++){
    if(str[i] != str[_i--])
      return false;
  }
  return true;
}

Qui il ragionamento è molto semplice, Itero la stringa dall'indice 0 fino all'indice str.length() / 2, quindi fino alla metà della stringa, e verifico una semplice domanda, l'elemento in posizione i è diverso dall'elemento in posizione str.length() - 1 - i ?, se si verifica questa condizione la stringa non é palindroma quindi ritorno false, altrimenti continuo con il ciclo fino alla metà della stringa, se passa il ciclo la mia stringa sarà Palindroma quindi ritorno true.

frattale

Non ci resta altro se non usarla sul nostro main

int main(){

  string str = "";
  cin >> str;

  string isP = isPalindroma(str) ? "e' Palindroma " : "non è palindroma ";
  cout << str <<isP;
  return 0; 
}

Ps. Non dimenticatevi di includere string, iostream e namespace std all'inizio del file

#include < iostream >
#include < string >
gg