我有两个链表,每个节点包含一个数字。数字的顺序相反,因此1的数字位于列表的开头。我必须编写一个函数,将两个数字相加并返回总和。 我已经在互联网上看到了很多解决方案并提出了我自己的解决方案。我想知道使用StringBuilder将数字转换为字符串是一种有效的方法。
public int addlists(Node head,Node head2) {
int sum = 0;
Node n = head;
Node n2 = head2;
StringBuilder s = new StringBuilder();
StringBuilder s2 = new StringBuilder();
while(n!=null) {
s.append(n.data);
n = n.next;
}
while(n2!=null) {
s2.append(n2.data);
n2 = n2.next;
}
s.reverse(); s2.reverse();
sum = Integer.parseInt(s.toString()) + Integer.parseInt(s2.toString());
System.out.println(sum);
return sum;
}
答案 0 :(得分:0)
您不需要使用StringBuilder
,您可以使用简单的数学运算,只需跟踪生成的carry
,并将10位乘以10和100 #39;使用Math.pow
public int addTwoLists(Node first, Node second) {
int carry=0,sum=0,k=0;
while (first != null || second != null){
sum = sum + ((carry+(first!=null?first.data:0)+(second!=null?second.data:0))%10) * ((int)(Math.pow(10,k)));
carry=(carry+(first!=null?first.data:0)+(second!=null?second.data:0)>=10)?1:0;
k++;
if (first != null) { first = first.next; }
if (second != null) { second = second.next; }
}
return sum;
}