gpt4 book ai didi

java - 如何轻松地将x的n次方作为字符串输出

转载 作者:行者123 更新时间:2023-11-29 07:27:53 25 4
gpt4 key购买 nike

我需要输出大数字,例如 8472886094433⁴⁵。我所有的数字都采用 3^n3^n -1 的形式。我使用来自 this post 的提示.现在我的代码看起来像:

public static void main(String[] args) throws IOException {        
Map<String,Character> map = new HashMap<>();
map.put("-", '\u207b'); map.put("5", '\u2075');
map.put("0", '\u2070'); map.put("6", '\u2076');
map.put("1", '\u00b9'); map.put("7", '\u2077');
map.put("2", '\u00b2'); map.put("8", '\u2078');
map.put("3", '\u00b3'); map.put("9", '\u2079');
map.put("4", '\u2074');

for(int i = 1; i< 50; i++){
String [] s = String.valueOf(i).split("");
StringBuilder sb = new StringBuilder();
sb.append("3");
Stream.of(s).forEach(e->sb.append(map.get(e)));
System.out.println(sb.toString());
}
}

unicode 值来自此 wiki 页面:( https://en.wikipedia.org/wiki/Unicode_subscripts_and_superscripts )

是否有另一种方法可以进行这种转换,而不是拆分指数的字符串值并附加 unicode 字符?

最佳答案

我将假设您的代码执行您想要的...

将每个数字转换为 unicode 上标并附加到 StringBuilder 的想法很好,但您的实现效率不高——尤其是在拆分中。如果这让您感到困扰,那么您可以这样做,这样会快得多:

static final String SUPDIGITS = "\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079";

public static void main(String[] args) throws IOException {

StringBuilder sb = new StringBuilder();
for(int i = 1; i< 50; i++) {
sb.setLength(0);

//append digits in reverse order
int v = i;
for (;v>0;v/=10) {
sb.append(SUPDIGITS.charAt(v%10));
}
//and then the 3
sb.append("3");
//and then reverse it
sb.reverse();
System.out.append(sb).println();
}
}

这里的主要区别在于此版本的内存分配要少得多。

关于java - 如何轻松地将x的n次方作为字符串输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47695035/

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