java面试题之求长整数中所有0和尾数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 

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

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

你可能感兴趣的:(java面试题之求长整数中所有0和尾数0的个数的策略《三》)