一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情。
一、问题描述
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
题目链接:回文数
二、题目要求
样例 1
输入: x = 121
输出: true
复制代码
样例 2
输入: x = -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
复制代码
考察
1.数学思想、回文判断
2.建议用时15~35min
复制代码
三、问题分析
回文数咩!搞起来。
回文数就是从前向后遍历的结果和从后向前的遍历结果对应相等,平常和栈结合起来的应用不少,但这一题比较简单,我们直接用数组存储数字就行。
首先,负数直接输出false,因为-号没法和其它的数字配对。
其次,数据范围最多10位,用一个12位大小的数组存储每一位数字绰绰有余。
先将数字按照顺序存入数组之后,首位依次判断,不相等返回false。
最后,上面错误的条件都不满足的话,那么返回true。
四、编码实现
class Solution {
public:
bool isPalindrome(int x) {
if(x<0)//负数返回false
return false;
int i,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])//不相等,输出false
return false;
return true;//返回true
}
};
复制代码