Skip to content

Commit b83f0c6

Browse files
committed
CTCI 5.7
1 parent ba88441 commit b83f0c6

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

ent5b.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Question 5.7 - Cracking the Coding Interview
2+
3+
def swap_odd_even_bits(x: int) -> int:
4+
5+
bi = "{0:b}".format(x)
6+
7+
even_mask = []
8+
odd_mask = []
9+
10+
for i in range(len(bi)):
11+
if i%2 == 0:
12+
even_mask.append('0')
13+
odd_mask.append('1')
14+
else:
15+
even_mask.append('1')
16+
odd_mask.append('0')
17+
18+
even_mask = int(''.join(even_mask),2)
19+
odd_mask = int(''.join(odd_mask),2)
20+
21+
even_masked = x & even_mask
22+
odd_masked = x & odd_mask
23+
24+
merged = (odd_masked >> 1) | (even_masked << 1)
25+
26+
return merged
27+
28+
print(swap_odd_even_bits(1431655765))

0 commit comments

Comments
 (0)