zoukankan      html  css  js  c++  java
  • 判断整形回文数

    题意:

    判断一个整数是否为回文数:

    1、负数不是回文数

    2、个位数一定是回文数

    3、12321、6666、11等类似这样的数是回文数

    下面是我写的代码:

     public boolean isPalindrome(int x) {
            if(x < 0){
                return false;
            }else if(x<10){
                return true;
            }
            int a=10,b=10;
            while(x/a > 9) a *= 10;
            if(x/a != x%b){
                return false;
            }else{
                a = a/10;
                b = b*10;
                while(a >= b){
                    int temp1 = (x%(a*10))/a;
                    int temp2 = (x/(b/10))%10;
                    if(temp1 != temp2)
                        return false;
                    a = a/10;
                    b = b*10; 
                }
            }
            return true;
        }
    

    思路:

    1 首先判断是否是正数

    2 判断是否是个位数

    3 根据算数特性,逐个提出对应位比较是否相等,一旦有不想等马上返回false,如果执行完成还没有不同,就在结尾返回true。

    leetcode讨论区方法:

    public boolean isPalindrome(int x) {
        if (x<0 || (x!=0 && x%10==0)) return false;
        int rev = 0;
        while (x>rev){
        	rev = rev*10 + x%10;
        	x = x/10;
        }
        return (x==rev || x==rev/10);
    }
    

    此方法利用回文数的特性:

    1 设置一个数为rev=0

    2 判断输入数字x是否大于rev,如果大于则进入循环,否则跳出到第4步

    3 令rev = rev*10 + x%10 且 x=x/10 , 进入下一个循环

    4 如果x是回文数,那么此时的x=rev或者x=rev/10

  • 相关阅读:
    (转)用JMX监测JVM的运行参数
    MySql
    ORACLE小工具:存储过程清空所有表或使所有触发器失效
    简单易懂,原码,补码,反码
    centos7如何关闭防火墙
    中兴大事件
    苹果降频门:旧款iPhone哪些功能受到影响
    苹果降频门
    华为P10闪存门
    N32903系列的基础知识(1)
  • 原文地址:https://www.cnblogs.com/K-artorias/p/7795870.html
Copyright © 2011-2022 走看看