专栏首页卯金刀GG【leetcode算法-判断回文数】

【leetcode算法-判断回文数】

1、题目要求

* 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
* 示例 1:
*
* 输入: 121
* 输出: true
* 示例 2:
*
* 输入: -121
* 输出: false
* 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

2、思路

既然比较,就从中间分开,挨个比较,使用了上次使用的二分法。

static boolean isPalindrome(int x) {
        String s = String.valueOf(x);
        char[] chars = s.toCharArray();
        int left = 0,right = chars.length-1;
        int mid = (left + right) / 2; // 注意
        int yushu = (left + right) % 2;
        if (yushu > 0){
            left = mid ;
            right = mid + 1;
        }else {
            left = right = mid;
        }
        while (left <= right && left >-1){
            char aChar = chars[left];
            char bChar = chars[right];
            if (aChar == bChar ){
                left--;
                right++;
            }else {
                return false;
            }
        }
        return true;
    }
//暴力破解,基于回文数一定相同
    static boolean isPalindrome2(int x){
        long y = 0;
        int tmp = x;
        if (x < 0) {
            return false;
        }
        while (tmp != 0) {
            int n = tmp % 10;
            tmp /= 10;
            y = y * 10 + n;
        }
        if (x == y) {
            return true;
        } else {
            return false;
        }
    }
    //官方解法
    static boolean IsPalindrome3(int x) {
        // 特殊情况:
        // 如上所述,当 x < 0 时,x 不是回文数。
        // 同样地,如果数字的最后一位是 0,为了使该数字为回文,
        // 则其第一位数字也应该是 0
        // 只有 0 满足这一属性
        if(x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }

        int revertedNumber = 0;
        while(x > revertedNumber) {
            revertedNumber = revertedNumber * 10 + x % 10;
            x /= 10;
        }

        // 当数字长度为奇数时,我们可以通过 revertedNumber/10 去除处于中位的数字。
        // 例如,当输入为 12321 时,在 while 循环的末尾我们可以得到 x = 12,revertedNumber = 123,
        // 由于处于中位的数字不影响回文(它总是与自己相等),所以我们可以简单地将其去除。
        return x == revertedNumber || x == revertedNumber/10;
    }

欢迎大佬指正!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【转载 leetcode算法-整数反转】

    我们可以一次构建反转整数的一位数字。在这样做的时候,我们可以预先检查向原整数附加另一位数字是否会导致溢出。

    用户5640963
  • 转载【阿里员工排查问题的工具清单,总有一款适合你】

    这是一篇来源于阿里内部技术论坛的文章,原文在阿里内部获得一致好评。作者已经把这篇文章开放到云栖社区中供外网访问。文章内容做了部分删减,主要删减掉了其中只有阿里内...

    用户5640963
  • DOM对象与jquery对象有什么不同

    1.jQuery对象和DOM对象 DOM对象,即是我们用传统的方法(javascript)获得的对象,jQuery对象即是用jQuery类库的选择器获得的对象;...

    用户5640963
  • 深度学习算法原理——Deep Structured Semantic Models(DSSM)

    论文地址:Learning deep structured semantic models for web search using clickthrough ...

    zhaozhiyong
  • LeetCode动画 | 37.解数独

    今天分享一个LeetCode题,题号是37,题目标题是解数独,题目标签是散列表和回溯算法。

    我脱下短袖
  • 嵌入式应用软件架构设计

    要做到嵌入式应用的代码逻辑清晰,且避免重复的造轮子,没有好的应用架构怎么行。 如果没有好的架构,移植将会是一件很痛苦的事情。

    特立独行的猫a
  • 详解Yii2框架中生成URL的方法

    在项目中,推荐使用 Yii2 内置的 URL 工具类生成链接,这样可以非常便捷的管理整站的 URL 行为:比如通过修改配置改变整站的URL格式等。URL 更多高...

    botkenni
  • 微信支付异常性能测试

    原文链接:https://wetest.qq.com/lab/view/426.html

    WeTest质量开放平台团队
  • 腾讯云NLP助力中科院&河海大学情感分析科研项目

    今年4月,极光大数据发布了一份《2019年社交网络行业研究报告》,报告中详细展示了中国目前主要社交产品的用户数据和使用情况,包括了微信、微博、陌陌、百度贴吧、多...

    庞九公子
  • phalcon-入门篇2(HelloWord与PhalconTools)

    #phalcon-入门篇2(HelloWord与PhalconTools)# ? 本教程基于phalcon2.0.9版本 ##前言## 先在这里感谢各位phal...

    喵了个咪233

扫码关注云+社区

领取腾讯云代金券