打印1到最大的n位数
来源:互联网 发布:linux查看path变量 编辑:程序博客网 时间:2024/05/14 11:02
剑指offer12题,开始觉得这题不难,一下就写出了如下的代码
package com.zjy.sword2offer;public class Print1toMaxN_1 {public static void print1toMaxN_1(int n){if(n<0)return;int max = (int)Math.pow(10, n);for(int i=1;i<max;i++)System.out.println(i);}public static void main(String[] args) {// TODO Auto-generated method stubprint1toMaxN_1(3);}}
结果发现自己忘了考虑大数的情况了,否则就溢出了,考虑大数则用字符串进行操作,代码如下
package com.zjy.sword2offer;public class Print1toMaxN_1 {public static void print1toMaxN_1(int n){if(n<0)return;StringBuffer sb = new StringBuffer(n);for(int i=0;i<n;i++)sb.append('0');while(!increment(sb)){PrintNum(sb);}}public static boolean increment(StringBuffer sb){int carry = 0;boolean overflow = false;int Len = sb.length()-1;for(int i=Len;i>=0;i--){int sum = sb.charAt(i) - '0' + carry;if(i==Len)sum++;if(sum>=10){if(i==0)overflow = true;else{sum -= 10;carry = 1;sb.setCharAt(i, (char)((int)'0'+sum));}}else{sb.setCharAt(i, (char)((int)'0'+sum));break;}}return overflow;}public static void PrintNum(StringBuffer sb){boolean begin = true;int Len = sb.length();for(int i=0;i<Len;i++){char ch = sb.charAt(i);if(begin && ch!='0')begin = false;if(!begin)System.out.print(ch);}System.out.println();}public static void main(String[] args) {// TODO Auto-generated method stubprint1toMaxN_1(3);}}
话说java里char和int的转换好蛋疼,char+int不能得到对应ASCLL码的字符,得强制转换来转换去的
0 0
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的N位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 打印1 到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的N位数
- 矩阵模版
- 笑傲红尘淡定人生
- oracle教程23
- HtmlHelper 视图如何应用注解与验证
- MyBatis 的 resultMap 简介
- 打印1到最大的n位数
- “逼老人自杀”的殡葬改革太不人性
- Java多线程中Volatile的使用
- ODBC数据源配置/oracle odbc Driver configuration 添加数据源乱码问题
- orale 查询两个时间段内的数据
- lua 部分语法
- 金万维异速联远程接入解决方案
- MFC 程序入口和执行流程
- 李瑞英告别《新闻联播》