> For the complete documentation index, see [llms.txt](https://anton-veselskyi.gitbook.io/codding-problems-solutions/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://anton-veselskyi.gitbook.io/codding-problems-solutions/leetcode/easy/convert-binary-number-in-a-linked-list-to-integer.md).

# Convert Binary Number in a Linked List to Integer

## [Convert Binary Number in a Linked List to Integer](https://leetcode.com/problems/convert-binary-number-in-a-linked-list-to-integer)

Given `head` which is a reference node to a singly-linked list. The value of each node in the linked list is either 0 or 1. The linked list holds the binary representation of a number.

Return the *decimal value* of the number in the linked list.

**Example 1:** ![](https://assets.leetcode.com/uploads/2019/12/05/graph-1.png)

```

Input: head = [1,0,1]
Output: 5
Explanation: (101) in base 2 = (5) in base 10
```

**Example 2:**

```

Input: head = [0]
Output: 0
```

**Example 3:**

```

Input: head = [1]
Output: 1
```

**Example 4:**

```

Input: head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]
Output: 18880
```

**Example 5:**

```

Input: head = [0,0]
Output: 0
```

**Constraints:**

* The Linked List is not empty.
* Number of nodes will not exceed `30`.
* Each node's value is either `0` or `1`.

## Solutions

### 🧠 Cpp

```cpp
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution
{
public:
    int getDecimalValue(ListNode* head)
    {
        string binary_s;
        for(; head; head = head->next)
            binary_s += to_string(head->val);

        return std::stoi(binary_s, nullptr, 2);
        /*
        bitset<32> binary_b;
        for(size_t i = 0, len = binary_s.size();
            i < len;
            ++i)
            binary_b[i] = binary_s[len-1-i] == '1';

        return static_cast<int>(binary_b.to_ulong());
        */
    }
};
```
