#include <iostream>
#include <queue>
#include <stack>
#include <cctype> // for tolower
#include <string>
using namespace std;
// -------------------------
// Palindrome Checker Function
// -------------------------
void checkPalindrome(const string& input) {
// Reject input with spaces
if (input.find(' ') != string::npos) {
cout << "Please enter only one word without spaces.\n";
return;
}
stack<char> s;
queue<char> q;
// Insert characters into stack and queue
for (char c : input) {
char lower = tolower(c); // تحويل الحرف إلى صغير
s.push(lower);
q.push(lower);
}
bool isPalindrome = true;
while (!s.empty()) {
if (s.top() != q.front()) {
isPalindrome = false;
break; // إذا حدث اختلاف، لا داعي لاستكمال المقارنة
}
s.pop();
q.pop();
}
if (isPalindrome)
cout << "Palindrome\n";
else
cout << "Not palindrome\n";
}
// -------------------------
// Main
// -------------------------
int main() {
string word;
cout << "\nEnter a word to check if it's a palindrome: ";
cin.ignore(); // مهم علشان نتفادى مشكلة getline بعد cin
getline(cin, word);
checkPalindrome(word);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxzdGFjaz4KI2luY2x1ZGUgPGNjdHlwZT4gLy8gZm9yIHRvbG93ZXIKI2luY2x1ZGUgPHN0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gUGFsaW5kcm9tZSBDaGVja2VyIEZ1bmN0aW9uCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kdm9pZCBjaGVja1BhbGluZHJvbWUoY29uc3Qgc3RyaW5nJiBpbnB1dCkgewogICAgLy8gUmVqZWN0IGlucHV0IHdpdGggc3BhY2VzCiAgICBpZiAoaW5wdXQuZmluZCgnICcpICE9IHN0cmluZzo6bnBvcykgewogICAgICAgIGNvdXQgPDwgIlBsZWFzZSBlbnRlciBvbmx5IG9uZSB3b3JkIHdpdGhvdXQgc3BhY2VzLlxuIjsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3RhY2s8Y2hhcj4gczsKICAgIHF1ZXVlPGNoYXI+IHE7CgogICAgLy8gSW5zZXJ0IGNoYXJhY3RlcnMgaW50byBzdGFjayBhbmQgcXVldWUKICAgIGZvciAoY2hhciBjIDogaW5wdXQpIHsKICAgICAgICBjaGFyIGxvd2VyID0gdG9sb3dlcihjKTsgLy8g2KrYrdmI2YrZhCDYp9mE2K3YsdmBINil2YTZiSDYtdi62YrYsQogICAgICAgIHMucHVzaChsb3dlcik7CiAgICAgICAgcS5wdXNoKGxvd2VyKTsKICAgIH0KCiAgICBib29sIGlzUGFsaW5kcm9tZSA9IHRydWU7CiAgICB3aGlsZSAoIXMuZW1wdHkoKSkgewogICAgICAgIGlmIChzLnRvcCgpICE9IHEuZnJvbnQoKSkgewogICAgICAgICAgICBpc1BhbGluZHJvbWUgPSBmYWxzZTsKICAgICAgICAgICAgYnJlYWs7ICAvLyDYpdiw2Kcg2K3Yr9irINin2K7YqtmE2KfZgdiMINmE2Kcg2K/Yp9i52Yog2YTYp9iz2KrZg9mF2KfZhCDYp9mE2YXZgtin2LHZhtipCiAgICAgICAgfQogICAgICAgIHMucG9wKCk7CiAgICAgICAgcS5wb3AoKTsKICAgIH0KCiAgICBpZiAoaXNQYWxpbmRyb21lKQogICAgICAgIGNvdXQgPDwgIlBhbGluZHJvbWVcbiI7CiAgICBlbHNlCiAgICAgICAgY291dCA8PCAiTm90IHBhbGluZHJvbWVcbiI7Cn0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gTWFpbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmludCBtYWluKCkgewogICAgc3RyaW5nIHdvcmQ7CiAgICBjb3V0IDw8ICJcbkVudGVyIGEgd29yZCB0byBjaGVjayBpZiBpdCdzIGEgcGFsaW5kcm9tZTogIjsKICAgIGNpbi5pZ25vcmUoKTsgLy8g2YXZh9mFINi52YTYtNin2YYg2YbYqtmB2KfYr9mJINmF2LTZg9mE2KkgZ2V0bGluZSDYqNi52K8gY2luCiAgICBnZXRsaW5lKGNpbiwgd29yZCk7CgogICAgY2hlY2tQYWxpbmRyb21lKHdvcmQpOwoKICAgIHJldHVybiAwOwp9Cg==