首页 > 其他分享 >力扣09 判断一个数是否是回文数

力扣09 判断一个数是否是回文数

时间:2022-12-03 01:33:07浏览次数:41  
标签:10 数字 int 09 力扣 121 回文 指针

力扣09 判断一个数是否是回文数

题目:

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

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

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

示例 1:

输入:x = 121
输出:true

示例 2:

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

示例 3:

输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。

解法一:

解题思路:

可以先将数字转化为字符串类型然后借鉴双指针的思想(左右指针),一个左指针一个右指针分别从两头往中间走并判断两个指针所指的值是否相等如果相等就是回文数反之则不是。

代码:

/**
 * 给定一个数字判定它是否是回文数,所谓回文数就是从左往右读与从右往左读都是一样
 * 例如:121
 */
public class IsHuiWenNum01 {
    //1.定义一个方法判定这个数字是否是回文数,返回值为boolean类型,参数为int
    public static Boolean isHuiWenNum(int number){
        //2.如果它是负数肯定就不是回文数
        if(number < 0){
            return false;
        }
        //2.1将这个数字转化为字符串
        String s = Integer.toString(number);
        //2.2我们可以使用双指针(左右指针)一个左指针一个右指针分别往中间走并判定这两个双指针是否相等
        int left = 0;
        int right = s.length()-1;
        //3.进行循环左右指针往中间走
        while (left <= right){
            //3.1判断左右指针是否相等
            if(s.charAt(left) != s.charAt(right)){
                return false;
            }
            left ++;
            right --;
        }
        return true;
    }
}

解法二:

解题思路:

我们可以将给定的数字变换成它完全翻到过来的数字再判断与原来的数字是否相等如果相等就是回文数反之不是。

代码:

/**
 * 不转换为字符串我们将这个数字想办法变成它从右往左读的数再与原来的数进行比较如果相等那么原来的这个数就是回文数
 * 例如:123 要先右一个中间量来作为过度假如为 x = 0
 * 第一步我们先取出各位上的数字:123 % 10 =3        2       1
 * 第二步更新x的值为: x = x * 10 + 3 = 3        32      321
 * 第三步取出除各位上的以外的数: 123 / 10 = 12     1       0
 * 重复这三步骤直到第三步为0最后x的值就是原来数倒过来的数
 */
public class IsHuiWenNum02 {
    //1.定义一个方法返回值为boolean类型参数为int类型
    public static Boolean isHuiWenNum(int num){
        //2.定义一个中间变量作为过度,定义一个变量作为num的中间量
        int a = num;
        int betweenNum = 0;
        while (a != 0){
            int lastNum = a % 10;
            betweenNum = betweenNum * 10 + lastNum;
            a = a / 10;
        }
        return betweenNum == num;
    }
}

标签:10,数字,int,09,力扣,121,回文,指针
From: https://www.cnblogs.com/ygstudy/p/16946097.html

相关文章

  • 力扣 leetcode 986. 区间列表的交集
    问题描述给定两个由一些闭区间组成的列表,firstList和secondList,其中firstList[i]=[starti,endi]而secondList[j]=[startj,endj]。每个区间列表都是成对不......
  • 力扣 leetcode 1769. 移动所有球到每个盒子所需的最小操作数
    问题描述有n个盒子。给你一个长度为n的二进制字符串boxes,其中boxes[i]的值为'0'表示第i个盒子是空的,而boxes[i]的值为'1'表示盒子里有一个小球。在......
  • P1963 [NOI2009] 变换序列
    P1963[NOI2009]变换序列求最小字典序匈牙利算法进行匹配因为每一次是要求已经匹配好的人进行换对象如果从前面开始,那就是会要求前面已经匹配好的人换对象,答案就不一......
  • 蓝桥杯 ALGO-40算法训练 会议中心 (APIO 2009)
    时间限制:2.0s内存限制:512.0MB关键字:APIO2009会议中心Siruseri政府建造了一座新的会议中心。许多公司对租借会议中心的会堂很感兴趣,他们希望能够在里面举行会议。......
  • 力扣03 返回最大不重复子串的长度
    力扣03返回最大不重复子串的长度题目:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例1:输入:s="abcabcbb"输出:3解释:因为无重复字符......
  • 09Linux任务调度
    任务调度基本介绍crontab指令Linuxcrontab是用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分钟会定期检查是否有要执......
  • ArcObjects SDK开发 009 Map-Layer的结构
    1、Map-Layer主干结构一个mxd文件可以包含多个地图,但我们常用的大部分都是包含一个地图。一个地图可以包含多个图层组和图层,而图层指向的则是实际数据。图层可以控制数据......
  • VMware 17 Exception 0xc0000094 解决
    VMWare16的虚拟机升级到17时,可能会出现虚拟机可以正常使用,但编辑设置就会出现vmui错误的现像.VMwareWorkstationunrecoverableerror:(vmui)Exception0xc000009......
  • 力扣 701. 二叉搜索树中的插入操作
    701.二叉搜索树中的插入操作给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据 保证 ......
  • 力扣 700. 二叉搜索树中的搜索
    700.二叉搜索树中的搜索给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在BST中找到节点值等于 val 的节点。返回以该节点为根的子树。如果节......