回文数字-栈
【问题描述】
一个数如果从左往右读和从右往左读数字是相同的,则称这个数是回文数,如121, 1221,15651都是回文数。输入一个高精度数n,判断n是否为回文数字。 输入:一个高精度数n(n小于200) 输出:如果是回文数,就输出YES,否则就输出NO。
【样例输入】
12345678987654321
【样例输出】
YES
#include<iostream> #include<stack> using namespace std; stack <char> s; int main(){ string s2; int i, start; cin>>s2; // 12345654321 for(i=0; i<s2.length()/2; i++){ s.push(s2[i]); // 如果s2的长度为奇数,则前一半元素入栈: } // 如果s2的长度为偶数,则start=i; // 如果s2的长度为奇数,则start=i+1; if(s2.length()%2==0) start=i; else start=i+1; for(int j=start; j<s2.length(); j++){ if(s.top()==s2[j]){ s.pop(); }else{ cout<<"NO"; return 0; } } if(!s.empty()) cout<<"NO"; else cout<<"YES"; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通