题目
给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。
请你返回该链表所表示数字的 十进制值 。
思路1:链表的值用字符串存储,然后调函数解决。
public int getDecimalValue(ListNode head) {
StringBuffer sb = new StringBuffer();
while(head!=null){
sb.append(head.val);
head = head.next;
}
String s = new String(sb);
return Integer.valueOf(s,2);
}
思路二:根据我们生活中二进制转十进制的方法。由于先读的是最高位,而每多读一个节点,我们就认为要多乘一个2。
public int getDecimalValue(ListNode head){
int result = 0;
while(head!=null){
result = result *2 + head.val;
head = head.next;
}
return result;
}