美文网首页
java面试题之求长整数中所有0和尾数0的个数的策略《三》

java面试题之求长整数中所有0和尾数0的个数的策略《三》

作者: 铭戈栈 | 来源:发表于2018-08-28 21:01 被阅读0次

/**

  • 求出:1000的阶乘所有零和尾部零的个数,不用阶乘。
    */
import java.math.BigInteger;
public class test1000For002 {
    public static void main(String[] args){
        //错误方案:
        //demo01();1000阶乘远大于long的类型范围,行不通。
        //正确方案:
        //calculateTheNumOfZeroTest01(); 求出这个大数字中所有0的个数
        //calculateThelastZeroNum02(); 求出这个大数字中尾部0的个数


    }

    public static void calculateThelastZeroNum02() {
        BigInteger b1 =new BigInteger("1");
        for (int i=1 ;i<=1000;i++){
            BigInteger b2 = new BigInteger(i+"");
            b1 = b1.multiply(b2);
        }
        String string2 =b1.toString();
        StringBuilder sb2 = new StringBuilder(string2);
        string2 =sb2.reverse().toString();//链式编程,反转字符串再赋值
        int count2=0;
        for (int i = 0; i <string2.length() ; i++) {
            if('0'==string2.charAt(i)){
                count2++;
            }
            else {
                break;
            }
        }
        System.out.println(count2);//249
    }

    public static void calculateTheNumOfZeroTest01() {
        BigInteger b1 =new BigInteger("1");
        for (int i=1 ;i<=1000;i++){
            BigInteger b2 = new BigInteger(i+"");
            b1 = b1.multiply(b2);
        }
        // System.out.println(b1);
        String string =b1.toString();
        int count=0;
        /* char[] arr =string.toCharArray();*/

        for (int i = 0; i <string.length() ; i++) {
            if('0' == string.charAt(i)){
                count++;
            }
        }
        System.out.println(count);
    }

    public static void demo01() {
        long num =1;
        for(long i=1; i <= 1000;i++){
            num =i * num;

        }
        System.out.println(num);
    }
}

总结:
①当需求的数的个数超过int和long的类型的最大长度时,即2^32-1这个值时,可以利用java自带的类库BigInterger对数字进行字符串化并且利用类的方法进行求值。
②考虑到求尾数0的个数,当看到求【尾数类】的题目时,要想到String中没有直接倒过来的方法,要把String放入StringBulidedr中,再利用StringBulider的方法对其进行反转,思路就开了。
③链式编程了解一下emmm。

欢迎访问个人搭建的博客:ympeng.top

相关文章

网友评论

      本文标题:java面试题之求长整数中所有0和尾数0的个数的策略《三》

      本文链接:https://www.haomeiwen.com/subject/imfcwftx.html