我想实现这样的目标:
A,B,C,......,Z,AA,AB,AC,...,ZZ,AAA,AAB,AAC,... AAZ,ABA,ABB,ABC,... ABZ, ..,ZZZ,AAAA,......
我试过了:
public String getSequence(int pos){
StringBuilder sb = new StringBuilder();
int exponential, digit;
int totalExponential = range;
int maxExp = 0;
int tempPos = 0;
for(int i=1; tempPos < pos; i++, maxExp++) //loop to find the greatest exponent
tempPos += (int)Math.pow(range, i);
maxExp--; //greatest exponent is decremented by 1
for(int i=1; i<maxExp; i++)
totalExponential += (int)Math.pow(range, maxExp);
while(maxExp>0){
exponential = (int)(Math.pow(range, maxExp));
pos -= exponential;
digit = (pos-1)/totalExponential;
sb.append((char)(start+digit));
totalExponential -= exponential;
maxExp--;
}
}
在1378号位置之前一切正常,
但是错误显示在下一个位置
有没有人有代码来实现这一目标。我更喜欢使用递归解决方案。感谢
答案 0 :(得分:1)
更容易从右到左。
试
public static String getSequence(int pos){
StringBuilder sb = new StringBuilder();
pos = pos -1;
while (pos >= 0){
sb.insert(0,(char)(start+(pos % range)));
pos /= range;
pos = pos -1;
}
return sb.toString();
}