<p>Given a positive integer <code>n</code>, return the number of the integers in the range <code>[0, n]</code> whose binary representations <strong>do not</strong> contain consecutive ones.</p> <p> </p> <p><strong>Example 1:</strong></p> <pre> <strong>Input:</strong> n = 5 <strong>Output:</strong> 5 <strong>Explanation:</strong> Here are the non-negative integers <= 5 with their corresponding binary representations: 0 : 0 1 : 1 2 : 10 3 : 11 4 : 100 5 : 101 Among them, only integer 3 disobeys the rule (two consecutive ones) and the other 5 satisfy the rule. </pre> <p><strong>Example 2:</strong></p> <pre> <strong>Input:</strong> n = 1 <strong>Output:</strong> 2 </pre> <p><strong>Example 3:</strong></p> <pre> <strong>Input:</strong> n = 2 <strong>Output:</strong> 3 </pre> <p> </p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= n <= 10<sup>9</sup></code></li> </ul>