栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode——9.回文数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode——9.回文数

通过万岁!!!

  • 题目:给你一个int的数,判断是不是回文数。
  • 基本思路:如果是负数,则肯定不是,然后转换成字符串,用双指针判断即可,如果不满足条件,直接返回false。
  • 不转换成String:那我们就通过int取余和取整,找到每个数,这里需要注意Math.log10(x)+1可以x的位数。但是这种方法反而速度更慢了,不太明白。
  • 大佬的思路:不转换成string的时候,我用还是一一进行比对,其实这是没有必要的,这个数字最多9位,我们可以最后一块比对,并且我比对过程中用了很多的方法,所以效率不高。大佬的思路是我们定义一个res,然后这个数就是每次*10加上x的余数,然后x每次被10除。其中,退出条件是x不大于res了,然后最后判断x和res的大小。然后有些特殊情况,考虑到就行了
  • 技巧:就是双指针

java代码——基本思想

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0) return false;
        String strx = x + "";
        int l = 0, r = strx.length() - 1;
        while (l < r) {
            if (strx.charAt(l) == strx.charAt(r)) {
                l++;
                r--;
            } else {
                return false;
            }
        }
        return true;
    }
}

java代码——不转换成String类型

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0) return false;
        int r = (int) Math.log10(x) + 1, l = 1;
        while (l < r) {
            if ((int) (x % Math.pow(10, l) / Math.pow(10, l - 1)) ==
                    (int) (x % Math.pow(10, r) / Math.pow(10, r - 1))) {
                r--;
                l++;
            } else {
                return false;
            }
        }
        return true;
    }
}

java代码——大佬的思路

class Solution {
    public boolean isPalindrome(int x) {
        if (x == 0) return true;
        if (x < 0 || x % 10 == 0) return false;
        int res = 0;
        while (x > res) {
            res = res * 10 + x % 10;
            x /= 10;
        }
        return res == x || x == (res / 10);
    }
}
  • 总结:题目比较简单,就是用双指针,我的思路虽然没有问题,但是就这个题来说的话速度还是比较慢了。还是需要看一下给定的限定条件的。大佬链接。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/885086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号