打印1到最大的n位数-Java

原文链接: http://www.cnblogs.com/loren-Yang/p/7466117.html

在练习剑指offer的时候,第12题打印1到最大的n位数的时候,想找个java版的,但大家要么用BigInteger做,要么给出其他的方法。我觉得要给就给最好的方法,下面是我自己参考C++代码写的java版的全排列方法。

代码:

public class Quanpaixu {

    public static void print1ToMaxOfNDigits(int n){
        if(n<=0) {
            return;
        }
        //生成相应位数大小的数组
        int[] number = new int[n];
        digui(number, n, 0);

    }
    //第二中方法实现,全排序实现
    public static void digui(int[] number,int length,int index){
        //判断是否到数组的最后索引位置
        if(index ==length){
            PrintNumber(number);
            return;
        }
        for(int i=0;i<10;i++){
            number[index]=i;
            digui(number, length, index+1);
        }
    }

    private static void PrintNumber(int[] number) {
        //标识第一个非0的节点
        boolean touFlag = true;
        for(int i=0; iif(number[i]!=0 && touFlag) {
                touFlag = false;
            }
            if(!touFlag) {
                System.out.print(number[i]);
            }
        }
        //不打印0,从1开始打印
        if(!touFlag) {
            System.out.println();
        }
    }
    //main方法测试  
    public static void main(String[] args) {
        print1ToMaxOfNDigits(3);
    }
}

转载于:https://www.cnblogs.com/loren-Yang/p/7466117.html

你可能感兴趣的:(打印1到最大的n位数-Java)