您的位置:首页 > Web前端

《剑指offer12——打印1到最大的n位数》

2018-03-30 01:24 253 查看
题目描述:

输入数字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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息