算法题每日一练---第71天:回文数

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情

一、问题描述

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

  • 例如,121 是回文,而 123 不是。

题目链接:回文数

二、题目要求

样例 1

输入: x = 121
输出: true
复制代码

样例 2

输入: x = -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
复制代码

考察

1.数学思想、回文判断
2.建议用时15~35min
复制代码

三、问题分析

回文数咩!搞起来。

25.gif

回文数就是从前向后遍历的结果和从后向前的遍历结果对应相等,平常和栈结合起来的应用不少,但这一题比较简单,我们直接用数组存储数字就行。

首先,负数直接输出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
    }
};
复制代码

五、测试结果

2.png

1.png

猜你喜欢

转载自juejin.im/post/7083287441133535239