Blog / 📚 Algoritm eficient verificare număr palindrom C++, Python, Java
În tutorialul de astăzi vom parcurge algoritmul eficient de verificare număr palindrom. Acesta apare în problemele de performanță și olimpiadă, dar și la nivelul de clasă, folosind doar structuri de început în aplicare. Totodată, poate fi scris în toate limbajele de programare, ca urmare vom parcurge reprezentările în C++ , Python
și Java
. Un număr este palindrom dacă este egal cu oglinditul său, e exemplu pentru intrarea
212
, vom primi rezultatul nr este palindrom
, în schimb, pentru intrarea 351
, vom primi ieșirea nr nu este palindrom
. Acest algoritm va verifica în interiorul funcției dacă oglinditul unui număr citit de la tastatură este egal cu acesta. Dacă da, atunci el este palindrom. Înainte de a începe să scriem codul vom înteleg cum funcționează. Tehnicile folosite sunt aproximativ aceleași, așa că explicațiile sunt la modul general.
Citim într-o variabilă numărul introdus de la tastatură. Acum, în funcția verifpal()
, de tip bool, vom afla oglinditul numărului folosind algoritmul de determinare oglindit, iar apoi, dacă noul număr este același cu primul vom returna adevărat (true)
, în caz contrar, funcția se termină cu rezultatul false (fals)
.
Mai jos puteți vedea implementările în limbajele C++, Python și Java și câteva probleme pe care le recomandăm pentru a înțelege mai bine tutorialul de astăzi.
Probleme recomandate de pe platforma PBinfo: PalMax, NrPal, palindrom prin norocoase
Implementarea C++ :
#include <iostream>
using namespace std;
bool verifpal(int a) {
int copie = a, oglinda = 0;
while (a > 0) {
oglinda = oglinda * 10 + a % 10;
a = a / 10;
} if (copie == oglinda)
return true;
return false;
}
int main() {
int a;
cin >> a;
if (verifpal(a))
cout << "nr este palindrom";
else
cout << "nr nu este palindrom";
return 0;
}
Implementarea Python :
def verifpal(a):
copie = a
oglinda = 0
while (a > 0):
oglinda = oglinda * 10 + a % 10
a = a // 10
if (oglinda == copie):
return 1
return 0
a = int(input())
if (verifpal(a)):
print("nr este palindrom")
else:
print("nr nu este palindrom")
Implementarea Java :
import java.util.Scanner;
class Tutorial {
public static boolean verifpal(int a) {
int copie = a, oglinda = 0;
while (a > 0) {
oglinda = oglinda * 10 + a % 10;
a = a / 10;
} if (oglinda == copie)
return true;
return false;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
if (verifpal(a))
System.out.println("nr este palindrom");
else
System.out.println("nr nu este palindrom");
}
}