[英]How to represent a 'long' number as nodes in a linked-list [JAVA]
我有一个务实的任务要解决:
我们可以存储在 memory 单元中的 Int 和 Long 数字的大小是有限的。 解决问题的一种方法是建立一个链表,其中链表中的每个节点都将包含数字中的一个数字,这样数字本身就不会被保留为数字,而是作为其数字的集合-一个接一个地。
我必须创建一个构造函数,它获取一个“长”类型的数字并将其以链表的格式存储。
我的意思是,如果我们采用数字 233,674,318,构造函数将创建该数字的表示形式,如下所示:2 -> 3 -> 3 -> 6 -> 7 -> 4 -> 3 -> 1 -> 8
你能建议我如何解决这个问题吗?
先感谢您!
您可以使用模运算符提取数字的最低有效数字(右侧的数字)。 在这种情况下, 233,674,318 % 10
将产生 8( %
表示模数)。 您可以使用除法去除数字的最低有效位。 233,674,318 / 10
将产生 23,367,431,这就像从数字中删除 8。 使用这两个操作,您可以从一个数字中提取所有数字并从中构建一个列表。
转换为字符串并取每个字符来创建节点
import java.util.*;
import java.util.stream.*
LinkedList<Integer> getList(long num){
String[] arr = String.valueOf(num).split("");
LinkedList<Integer> list = new LinkedList<>();
list.addAll(Stream.of(arr)
.mapToInt(x->Integer.parseInt(x))
.boxed()
.collect(Collectors.toList()));
return list;
}
这是您可以使用的方法。 最终,要么使用模数来获取每个数字,要么使用拆分 function 对长数的字符串值进行解析并存储在整数的 LinkedList 中。
如果您尝试保存 memory,根据您的问题,对链表使用整数会更好,因为整数仅使用 32 位,而 long 使用 64 位。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.