Java面试有关问题之六十一

Java面试问题之六十一
问题:请你编写一个方法来判断一个整数是否是一个守形数,如果是输出"YES",否则输出"NO"。要求尽可能地简单和快速。

答:代码如下:

import java.lang.Math;

public class KeepFormatNumber {

        public static String doJudge(int n) {
                int sn =(int) Math.pow(n,2);
                int len = countLength(n);
                int times=1;

                for(int i=0;i<len;++i){
                        times*=10;
                }

                if((sn-(sn/times)*times)==n) return "YES";
                else return "NO";
        }

        private static int countLength(int n) {
                int len=0;
                while(n!=0){
                        n/=10;
                        ++len;
                }

                return len;
        }

        public static void main(String[] args){
                int n1 = 25;
                int n2 = 125;
                System.out.println("n1= "+n1+" result : "+KeepFormatNumber.doJudge(n1));
                System.out.println("n2= "+n2+" result : "+KeepFormatNumber.doJudge(n2));
        }

}




代码运行结果:
Lab-Computer-0db2f6:JavaExercises labuser$ javac KeepFormatNumber.java
Lab-Computer-0db2f6:JavaExercises labuser$ java KeepFormatNumber
n1= 25 result : YES
n2= 125 result : NO
Lab-Computer-0db2f6:JavaExercises labuser$