This notebook was prepared by Donne Martin. Source and license info is on GitHub.

# Solution Notebook¶

## Problem: Maximizing XOR¶

See the HackerRank problem page.

## Constraints¶

See the HackerRank problem page.

## Test Cases¶

See the HackerRank problem page.

## Algorithm¶

• Set max to 0
• For i in the range (lower, upper) inclusive
• For j in the range (lower, upper) inclusive
• Compare i ^ j with max, update max if needed
• return max

Complexity:

• Time: O(n^2) - See note below
• Space: O(1)

Note:

• TODO: Add more optimal solutions such as those discussed here.

## Code¶

In [1]:
class Solution(object):

def max_xor(self, lower, upper):
result = 0
for l in range(lower, upper + 1):
for u in range(lower, upper + 1):
curr = l ^ u
if result < curr:
result = curr
return result

## Unit Test¶

In [2]:
%%writefile test_maximizing_xor.py
import unittest

class TestMaximizingXor(unittest.TestCase):

def test_maximizing_xor(self):
solution = Solution()
self.assertEqual(solution.max_xor(10, 15), 7)
print('Success: test_maximizing_xor')

def main():
test = TestMaximizingXor()
test.test_maximizing_xor()

if __name__ == '__main__':
main()
Overwriting test_maximizing_xor.py
In [3]:
%run -i test_maximizing_xor.py
Success: test_maximizing_xor