gpt4 book ai didi

java - 获取给定位置的动态字母序列 JAVA

转载 作者:行者123 更新时间:2023-12-01 13:00:43 25 4
gpt4 key购买 nike

我想要实现这样的目标:

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 为止都工作正常,

enter image description here

但错误显示在下一个位置

enter image description here

有谁有实现此目的的代码吗?我更喜欢递归解决方案。谢谢

最佳答案

从右到左更容易。

尝试

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();
}

关于java - 获取给定位置的动态字母序列 JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23532114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com