Як реалізувати перевірку на паліндром у C++

pic

Паліндром — це слово, число чи фраза, які читаються однаково вперед і назад. Наприклад, числа 121 та 1221 є паліндромами, але 123 — ні. У цій статті ми пройдемо покроковий посібник з реалізації перевірки на паліндром у C++ за допомогою двох різних підходів.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — —

🔎 Що таке паліндром?

Паліндром — це число або рядок, яке залишається незмінним при перевертанні. Наприклад:

• ✅ 121 → Паліндром

• ✅ 1221 → Паліндром

• ❌ 123 → Не є паліндромом

Завдання полягає в тому, щоб перевірити, чи є задане ціле число паліндромом у C++.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Підхід 1: Використання перетворення в рядок

Найпростіший спосіб перевірити, чи є число паліндромом — це перетворити число на рядок та порівняти його з перевернутою версією.

💻 Приклад коду:

#include   
#include   
using namespace std;  

bool isPalindrome(int num) {  
 string original = to_string(num);  
 string reversed = string(original.rbegin(), original.rend());  
 return original == reversed;  
}  

int main() {  
 int number;  
 cout << "Введіть число: ";  
 cin >> number;  

 if (isPalindrome(number)) {  
 cout << number << " є паліндромом." << endl;  
 } else {  
 cout << number << " не є паліндромом." << endl;  
 }  

 return 0;  
}

Пояснення:

• Ми перетворюємо число на рядок за допомогою to_string().

• Перевертаємо рядок за допомогою rbegin() і rend().

• Нарешті, порівнюємо оригінальний рядок з перевернутим рядком.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Підхід 2: Без використання рядків (Математичний підхід)

Цей підхід перевіряє паліндром без перетворення числа на рядок. Замість цього ми перевертаємо число математично та порівнюємо його з оригінальним числом.

💻 Приклад коду:

#include   
using namespace std;  

bool isPalindrome(int num) {  
 if (num < 0) return false;  

 int original = num;  
 int reversed = 0;  

 while (num > 0) {  
 int digit = num % 10;  
 reversed = reversed * 10 + digit;  
 num /= 10;  
 }  

 return original == reversed;  
}  

int main() {  
 int number;  
 cout << "Введіть число: ";  
 cin >> number;  

 if (isPalindrome(number)) {  
 cout << number << " є паліндромом." << endl;  
 } else {  
 cout << number << " не є паліндромом." << endl;  
 }  

 return 0;  
}

Пояснення:

Крок 1: Зберігаємо оригінальне число у змінній.

Крок 2: Перевертаємо число за допомогою циклу while:

• Отримуємо останню цифру за допомогою % 10.

• Додаємо її до перевернутого числа після множення поточного перевернутого числа на 10.

• Видаляємо останню цифру за допомогою / 10.

  • Крок 3: Порівнюємо перевернуте число з оригінальним числом.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

🔑 Основні моменти:

  1. Паліндром читається однаково зліва направо та справа наліво.

  2. Для перевірки паліндромів можна використовувати:

Перетворення в рядок

Математичне перевертання

  1. Математичний підхід є більш ефективним з точки зору складності за використанням пам'яті.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Висновок:

Ось і все! Тепер ви знаєте, як реалізувати перевірку на паліндром у C++ за допомогою обох методів — простого та ефективного. Це завдання часто зустрічається на співбесідах з програмування, тому варто попрактикуватися.

Отже, наступного разу, коли вас запитають, чи є 1221 паліндромом, ви не просто скажете “так” — ви поясните, як це перевірити за допомогою коду! 😉

Щасливого програмування! 😊

Перекладено з: How to Implement Palindrome Check in C++

Leave a Reply

Your email address will not be published. Required fields are marked *