美文网首页剑指offer的java实现-数据结构与算法
剑指offer第二版-17.打印从1到最大的n位数

剑指offer第二版-17.打印从1到最大的n位数

作者: ryderchan | 来源:发表于2017-07-13 22:01 被阅读110次

    本系列导航:剑指offer(第二版)java实现导航帖

    面试题17:打印从1到最大的n位数

    题目要求:
    比如输入2,打印1,2......98,99;

    解题思路:
    此题需要考虑大数问题。本帖是使用字符串模拟数字的加法。

    package chapter3;
    /**
     * Created by ryder on 2017/7/6.
     *
     */
    public class P114_Print1ToMaxOfNDigits {
        //在字符串上模拟加法
        public static void print1ToMaxOfNDigits(int num){
            if(num<=0)
                return;
            StringBuilder number = new StringBuilder(num);
            for(int i=0;i<num;i++)
                number.append('0');
            while(increment(number)){
                printNumber(number);
            }
        }
        public static boolean increment(StringBuilder str){
            for(int i=str.length()-1;i>=0;i--){
                if(str.charAt(i)<'9' && str.charAt(i)>='0'){
                    str.setCharAt(i,(char)(str.charAt(i)+1));
                    return true;
                }
                else if(str.charAt(i)=='9'){
                    str.setCharAt(i,'0');
                }
                else{
                    return false;
                }
            }
            return false;
        }
        public static void printNumber(StringBuilder number){
            boolean flag = false;
            for(int i=0;i<number.length();i++){
                if(flag)
                    System.out.print(number.charAt(i));
                else{
                    if(number.charAt(i)!='0'){
                        flag = true;
                        System.out.print(number.charAt(i));
                    }
                }
            }
            System.out.println();
        }
        public static void main(String[] args){
            print1ToMaxOfNDigits(2);
        }
    }
    

    运行结果

    1
    2
    ......
    99
    

    相关文章

      网友评论

        本文标题:剑指offer第二版-17.打印从1到最大的n位数

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