二进制链表转整数

此博客链接: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);

    }
}

 

posted @ 2020-04-15 21:57  萍2樱释  阅读(248)  评论(0编辑  收藏  举报