10.15

今天完成了对于回文数的计算
只是使用栈:

点击查看代码
#include<iostream>
#include<stack>
using namespace std;
bool isPalindrome(int num) {
    // 将负数排除,因为负数不可能是回文数
    if (num < 0) return false;

    stack<int> stack;
    int original = num;
    int reversed = 0;

    // 逐位将数字的前半部分压入栈中
    while (num > 0) {
        stack.push(num % 10);
        num /= 10;
    }

    // 逐位比较栈顶的数字与原数
    num = original; // 重置num为原始数字
    while (!stack.empty()) {
        int top = stack.top();
        if (num % 10 != top) return false; // 如果不相等,则不是回文数
        stack.pop();
        num /= 10;
    }

    return true; // 全部数字相等,则为回文数
}

int main() {
    int number;
    cout << "请输入一个数字: ";
    cin >> number;

    if (isPalindrome(number)) {
        cout << number << " 是回文数\n";
    } else {
        cout << number << " 不是回文数\n";
    }

    return 0;
}
使用栈和队列:
点击查看代码
#include <iostream>
#include <stack>
#include <queue>
using namespace std;
bool isPalindrome(int num) {
    // 负数不可能是回文数
    if (num < 0) return false;

    stack<int> stack;
    queue<int> queue;

    // 提取每一位并分别存入栈和队列
    int original = num;
    while (num > 0) {
        int digit = num % 10;
        stack.push(digit);
        queue.push(digit);
        num /= 10;
    }

    // 比较栈和队列的每一位
    while (!stack.empty() && !queue.empty()) {
        if (stack.top() != queue.front()) {
            return false;  // 如果栈顶和队首元素不相等,则不是回文数
        }
        stack.pop();
        queue.pop();
    }

    return true;  // 所有位都相等,则为回文数
}

int main() {
    int number;
    cout << "请输入一个数字: ";
    cin >> number;

    if (isPalindrome(number)) {
        cout << number << " 是回文数\n";
    } else {
        cout << number << " 不是回文数\n";
    }

    return 0;
}

posted @   QixunQiu  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示