一、问题描述
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
题目链接:回文数
二、题目要求
样例 1
输入: x = 121 输出: true
样例 2
输入: x = -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
考察
数学思想、回文判断 建议用时15~35min
三、问题分析
回文数咩!搞起来。
回文数就是从前向后遍历的结果和从后向前的遍历结果对应相等,平常和栈结合起来的应用不少,但这一题比较简单,我们直接用数组存储数字就行。
首先,负数直接输出false,因为-号没法和其它的数字配对。
其次,数据范围最多10位,用一个12位大小的数组存储每一位数字绰绰有余。
先将数字按照顺序存入数组之后,首位依次判断,不相等返回false。
最后,上面错误的条件都不满足的话,那么返回true。
四、编码实现
classSolution { public: boolisPalindrome(intx) { if(x<0)//负数返回falsereturnfalse; inti,n=0,a[12];//初始化数据while(x)//数字存入数组 { a[n++]=x%10; x=x/10; } for(i=0;i<n/2;i++)//首尾依次向内收缩判断if(a[i]!=a[n-i-1])//不相等,输出falsereturnfalse; returntrue;//返回true } };