剑指offer(Java实现)17 - 打印从1到最大的n位数

输入数字 n,按顺序打印出从 1 最大的 n 位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即 999。

思路:

考虑大数问题,使用字符串代替数字。

class Solution{
	public void print1ToMaxOfNDights1s(int n) {
        if (n <= 0)
            return;
        char[] digit = new char[n];
        for (int i = 0; i < n; i++)
            digit[i] = '0';
        for (int i = n - 1; i >= 0; i--) {
            while (digit[i] != '9') {
                int m = 0;
                digit[m]++;
                while (m < n - 1 && digit[m] > '9') {
                    digit[m] = '0';
                    digit[m + 1]++;
                    m++;
                }
                printdigits(digit);
            }
        }
    }

    private void printdigits(char[] digit) {
        int m = digit.length - 1;
        while (digit[m] == '0')
            m--;
        for (int i = m; i >= 0; i--)
            System.out.print(digit[i]);
        System.out.println();
    }
}

你可能感兴趣的:(剑指offer(Java实现)17 - 打印从1到最大的n位数)