gpt4 book ai didi

java - 如何将以 10 为基数的数字转换为字母顺序,如 HTML 中的有序列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:37:28 24 4
gpt4 key购买 nike

我想将一个整数转换为等效的字母顺序,如 HTML 中的有序列表。

<ol type="a">

我试图将一个以 10 为基数的数字转换为一个以 a-z 数字表示的以 26 为基数的数字。
但这不是我想要的。

IN     WANT        GET      
-----------------------
1 => a <= a
2 => b <= b
3 => c <= c
4 => d <= d
5 => e <= e
6 => f <= f
7 => g <= g
8 => h <= h
9 => i <= i
10 => j <= j
11 => k <= k
12 => l <= l
13 => m <= m
14 => n <= n
15 => o <= o
16 => p <= p
17 => q <= q
18 => r <= r
19 => s <= s
20 => t <= t
21 => u <= u
22 => v <= v
23 => w <= w
24 => x <= x
25 => y <= y
26 => z <= az
27 => aa <= aa
28 => ab <= ab
29 => ac <= ac

private final static char[] digits = {
'0' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' ,
'g' , 'h' , 'i' , 'j' , 'k' , 'l' ,
'm' , 'n' , 'o' , 'p' , 'q' , 'r' ,
's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z'
};

private static String numberToAlphaNumeric(long i, int radix) {

char[] buf = new char[65];
int charPos = 64;
boolean negative = (i < 0);
if (!negative) {
i = -i;
}
while (i <= -radix) {
buf[charPos--] = digits[(int)(-(i % radix))];
i = i / radix;
}
buf[charPos] = digits[(int)(-i)];
if (negative) {
buf[--charPos] = '-';
}
return new String(buf, charPos, (65 - charPos));
}

public static String numberToAlphaNumeric(long number) {
ArrayList<String> list = new ArrayList<String>();
for( int j = 0; list.size() != number; j++ ) {
String alpha = numberToAlphaNumeric( j, digits.length );
if(!alpha.contains( "0" )) {
list.add( alpha );
}
}
return list.get( list.size()-1 );
}

我的第二个想法:

如果我将新的前导符号扩展到数字并将我的数字转换为以 27 为基数的数字,我在每个错误的结转中都有新的符号,我可以过滤掉它们。

这是非常低效和丑陋的,但我没有更多的想法。常见的方法是什么?

最佳答案

这是基本算法。如果您需要提高效率,请使用 StringBuffer:

  public static String getAlpha(int num) {

String result = "";
while (num > 0) {
num--; // 1 => a, not 0 => a
int remainder = num % 26;
char digit = (char) (remainder + 97);
result = digit + result;
num = (num - remainder) / 26;
}

return result;
}

执行此操作的另一种方法是转换为基数 26,然后将 97 添加到您获得的字符串中的每个字符。

关于java - 如何将以 10 为基数的数字转换为字母顺序,如 HTML 中的有序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11969840/

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