这是一道3进制的问题。
我想遍历从0到2222222222,逢3进1如从0到22所有的数字为:
00
10
20
01
11
21
02
12
22本人算法如下:
public class Test { public static void main(String[] args) {
String str="00";
char[] ch=str.toCharArray();
int i=0;
while (!str.equals("22")) {
method(ch,i);
str=new String(ch);
System.out.println(str);
} }
private static void method(char[] c,int j){
int tem=Integer.parseInt(""+c[j])+1;
if(tem==3){
tem=0;
method(c,j+1);
}
c[j]=(""+tem).charAt(0);
tem=0;
}
}但上面的算法处理少位还可以,若处理10位以上数字的话超慢,希望各位大虾指点一下,有没有更快的算法(若有好的算法,一定给分,谢谢了)
我想遍历从0到2222222222,逢3进1如从0到22所有的数字为:
00
10
20
01
11
21
02
12
22本人算法如下:
public class Test { public static void main(String[] args) {
String str="00";
char[] ch=str.toCharArray();
int i=0;
while (!str.equals("22")) {
method(ch,i);
str=new String(ch);
System.out.println(str);
} }
private static void method(char[] c,int j){
int tem=Integer.parseInt(""+c[j])+1;
if(tem==3){
tem=0;
method(c,j+1);
}
c[j]=(""+tem).charAt(0);
tem=0;
}
}但上面的算法处理少位还可以,若处理10位以上数字的话超慢,希望各位大虾指点一下,有没有更快的算法(若有好的算法,一定给分,谢谢了)
解决方案 »
- java调用visit里面的数据
- 给出一个int型数,比如5310 ,给他分成四个128以内的数,注意 不是随机的,通过这四个数不管如何计算,最后能得到5310
- 关于while loop,急求各位达人。
- scaledImg = (BufferedImage)tt.getScaledInstance(width, height,Image.SCALE_FAST); 返回值说不相配,这是怎么回事?
- 高分求两个问题!
- 急,各位大哥帮帮忙吧,Java 连接SQLServer问题
- 新手提的简单问题:在JPanel上drawString字符串,背景为黑色,显示不出字符串。
- 那一种方式显示曲线速度最高(1万条数据采样点以上)(100分送)
- 日期问题(急!在线等)
- 到迈谱,我应聘java,他却问我cisco?我不禁自问:他会java吗?
- 再发:用java的applet调用delphi封装第三方动态库函数的exe文件出错,急!!!!!分不够再加
- 如果你对Integer类熟悉的话 ,请进
pout(i);
}
} private static void pout( int num ){
int j;
String str = "";
while (num>0){
j = num % 3;
num = num / 3;
str = j + str;
}
System.out.println(str);
}
}
System.out.println(Integer.toString(i,3));
}
test1:10位数,用时:141毫秒test2:10位数,用时:406毫秒