zoukankan      html  css  js  c++  java
  • 9. Palindrome Number

    原文链接:https://leetcode.com/problems/palindrome-number/description/。这道题目难度是简单,然后解答也是简单易懂,虽然我还是没能写出正确答案。。。

    我的思路

    首先,我想到的是将整数转换为一个字符数组,然后再比对对应位置上的字符是否相同,但是题目说了不能使用额外的空间,而且这道题目是简单级别的,答案应该不至于太复杂,所以放弃了。。。
    然后,我猜测是不是能根据某种位运算来作出判断呢?然后我看了下回文数 12321 的二进制 0011 0000 0010 0001,可以说是毫无规律可言,然后也放弃了。。。
    最后,我想到对 10 做一系列的求除数、余数做判断,然后写出来下面似对非对的代码:

    /**
     * Created by clearbug on 2018/2/26.
     */
    public class Solution {
    
        public static void main(String[] args) {
            Solution s = new Solution();
            System.out.println(s.isPalindrome(233));
            System.out.println(s.isPalindrome(232));
            System.out.println(s.isPalindrome(2332));
            System.out.println(s.isPalindrome(23432));
            System.out.println(s.isPalindrome(234432));
        }
    
    
        public boolean isPalindrome(int x) {
            int temp = 0;
            while (x != 0) {
                temp = temp * 10 + x % 10;
                x = x / 10;
                if (temp == x) {
                    return true;
                }
                if (temp > x) {
                    return false;
                }
            }
    
            return false;
        }
    }
    

    运行分析可以,如果测试数据长度是偶数基本上还能运行正确,但是测试数据长度是奇数就不行了。然后,我以为自己又已经走在错误的道路上了,江郎才尽就去看了下标准答案。没想到的是自己已经接近标准答案了。。。真的好可惜

    官方答案

    /**
     * Created by clearbug on 2018/2/26.
     */
    public class Solution {
    
        public static void main(String[] args) {
            Solution s = new Solution();
            System.out.println(s.isPalindrome(233));
            System.out.println(s.isPalindrome(232));
            System.out.println(s.isPalindrome(2332));
            System.out.println(s.isPalindrome(23432));
            System.out.println(s.isPalindrome(234432));
        }
    
    
        public boolean isPalindrome(int x) {
            if(x < 0 || (x % 10 == 0 && x != 0)) {
                return false;
            }
    
            int revertedNumber = 0;
            while(x > revertedNumber) {
                revertedNumber = revertedNumber * 10 + x % 10;
                x /= 10;
            }
    
            return x == revertedNumber || x == revertedNumber/10;
        }
    }
    
  • 相关阅读:
    织梦dedecms网站数据库出错如何修复
    如何实现织梦dedecms会员登陆后就不显示广告
    搜索框里显示字段鼠标点击后就隐藏的方法
    织梦dedecms首页如何调用联动类别代码
    织梦CMS友情链接调用方法技巧大全
    DedeCMS 标题seo优化给列表页加上第x页
    DedeCMS采集教程:过滤替换的技巧
    织梦dedecms网站数据库出错如何修复
    压力测试-查看索引
    时间同步服务部署
  • 原文地址:https://www.cnblogs.com/optor/p/8476278.html
Copyright © 2011-2022 走看看