《剑指offer12——打印1到最大的n位数》
2018-03-30 01:24
253 查看
题目描述:
输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。
java实现:
输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。
java实现:
/** * 《《剑指offer——12》》 * 打印1到最大的n位数 * 思路:考虑大数问题。这里有两种解决方案,一种使用字符串表示表达大 * 数,另一种是用数组表示大数 * @param args */ public static void print1ToMaxOfNDigits(int n){ //用字符数组表示大数 char[] number = new char ; //字符数组每一位置为‘0’ for(int i=0;i<number.length;i++) number[i] = '0'; while(!addOne(number)){ //如果没有溢出 String result=""; for(int i =0;i<number.length;i++){ result += number[i]; } System.out.println(result); } if(n<=0) //当n小于等于0时 return; return; } public static boolean addOne(char[] number){ boolean isOverFlow = false; //设置判断是否溢出位 int flag = 1; //加法进位 char[] base = {'0','1','2','3','4','5','6','7','8','9'}; for(int i = number.length-1;i>=0;i--){ if(((number[i]- '0')+flag)>=10){ if(i == 0){ //最高位溢出 isOverFlow = true; } number[i] = '0'; } else{ int num =0; num =(number[i]- '0') + 1; number[i] = base[num]; flag = 0; break; } } return isOverFlow; }
相关文章推荐
- 【面试题】剑指offer12--打印1到最大的n位数
- 剑指Offer12打印1到最大的n位数
- 剑指offer12:打印1到最大的n位数
- [剑指offer][面试题12]打印1到最大的n位数
- 打印从1到最大的n位数
- 写函数实现打印出1到最大的n位数,形参为n位数
- (3)打印1到最大的n位数
- 题目1515:打印1到最大的N位数
- 打印1到最大的n位数(C语言)
- c++面试题之打印1到最大的n位数
- 数据结构-打印1到最大的n位数
- 剑指offer-面试题12-打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 打印1到最大的n位数 Java
- 剑指offer——面试题12:打印1到最大的n位数
- 面试杂题(九)打印一到最大的n位数
- 打印1到最大的n位数
- 每日一题(64) - 打印1到最大的n位数
- 【剑指Offer面试题】 九度OJ1515:打印1到最大的N位数
- 面试算法(十一)打印1到最大的n位数