此博客链接:https://www.cnblogs.com/ping2yingshi/p/12708819.html
二进制链表转整数()
题目链接:https://leetcode-cn.com/problems/convert-binary-number-in-a-linked-list-to-integer/
给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。
请你返回该链表所表示数字的 十进制值 。
示例 1:
输入:head = [1,0,1]
输出:5
解释:二进制数 (101) 转化为十进制数 (5)
示例 2:
输入:head = [0]
输出:0
示例 3:
输入:head = [1]
输出:1
示例 4:
输入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]
输出:18880
示例 5:
输入:head = [0,0]
输出:0
提示:
链表不为空。
链表的结点总数不超过 30。
每个结点的值不是 0 就是 1。
题解:
二进制转十进制说明,参考链接:https://baike.baidu.com/item/%E4%BA%8C%E8%BF%9B%E5%88%B6%E8%BD%AC%E5%8D%81%E8%BF%9B%E5%88%B6/393152?fr=aladdin
思路:
思路1.计算链表长度,按照二进制转换成十进制规则求结果。
思路2.把二进制转换成字符串,然后使用字符串转成十进制。
方法1代码如下:
class Solution { public int getDecimalValue(ListNode head) { int count=0; int sum=0; ListNode pre=head; while(pre!=null) { count++; pre=pre.next; } for(int i=0;i<count;i++) { if(head.val==1) sum=sum*2+1; else sum=sum*2+0; head=head.next } return sum; } }
方法2代码如下:
class Solution { public int getDecimalValue(ListNode head) { StringBuffer str=new StringBuffer(); while(head!=null) { str=str.append(head.val); head=head.next; } return Integer.parseInt(str.toString(),2); } }