剑指offer:面试题12、打印从1到最大的n位数

题目描述

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

代码示例

public class Offer12 {
    public static void main(String[] args) {
        Offer12 testObj = new Offer12();
        testObj.print1ToMaxOfNBit(2);
    }

    private void print1ToMaxOfNBit(int n) {
        if (n <= 0) {
            return;
        }
        char[] nums = new char[n];
        print1ToMaxOfNBit(nums, 0);
    }

    private void print1ToMaxOfNBit(char[] nums, int bitSize) {
        if (bitSize == nums.length) {
            printNumber(nums);
            return;
        }
        for (int i = 0; i < 10; i++) {
            nums[bitSize] = (char)(i + '0');
            print1ToMaxOfNBit(nums, bitSize + 1);
        }
    }

    public void printNumber(char[] nums) {
        int index = 0;
        while (index < nums.length && nums[index] == '0') {
            index++;
        }
        while (index < nums.length) {
            System.out.print(nums[index++]);
        }
        System.out.println();
    }
}
posted @ 2020-06-16 00:22  IT小磊  阅读(24)  评论(0编辑  收藏  举报