Паліндром — це слово, число чи фраза, які читаються однаково вперед і назад. Наприклад, числа 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: Порівнюємо перевернуте число з оригінальним числом.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
🔑 Основні моменти:
-
Паліндром читається однаково зліва направо та справа наліво.
-
Для перевірки паліндромів можна використовувати:
• Перетворення в рядок
• Математичне перевертання
- Математичний підхід є більш ефективним з точки зору складності за використанням пам'яті.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Висновок:
Ось і все! Тепер ви знаєте, як реалізувати перевірку на паліндром у C++ за допомогою обох методів — простого та ефективного. Це завдання часто зустрічається на співбесідах з програмування, тому варто попрактикуватися.
Отже, наступного разу, коли вас запитають, чи є 1221 паліндромом, ви не просто скажете “так” — ви поясните, як це перевірити за допомогою коду! 😉
Щасливого програмування! 😊
Перекладено з: How to Implement Palindrome Check in C++