Find Kth Bit in Nth Binary String - Problem

Given two positive integers n and k, the binary string Sn is formed as follows:

S1 = "0"

Si = Si-1 + "1" + reverse(invert(Si-1)) for i > 1

Where + denotes the concatenation operation, reverse(x) returns the reversed string x, and invert(x) inverts all the bits in x (0 changes to 1 and 1 changes to 0).

For example, the first four strings in the above sequence are:

  • S1 = "0"
  • S2 = "011"
  • S3 = "0111001"
  • S4 = "011100110110001"

Return the kth bit in Sn. It is guaranteed that k is valid for the given n.

Input & Output

Example 1 — Basic Case
$ Input: n = 3, k = 1
Output: 0
💡 Note: S3 = "0111001". The 1st bit is "0"
Example 2 — Middle Position
$ Input: n = 4, k = 11
Output: 1
💡 Note: S4 = "011100110110001". The 11th bit is "1"
Example 3 — Second Half
$ Input: n = 2, k = 3
Output: 1
💡 Note: S2 = "011". The 3rd bit is "1"

Constraints

  • 1 ≤ n ≤ 20
  • 1 ≤ k ≤ 2n - 1

Visualization

Tap to expand
Find Kth Bit in Nth Binary String INPUT Binary String Construction: S1 = "0" S2 = "0" + "1" + "1" S3 = "011" + "1" + "001" S3 = "0111001" Position (k): 1 2 3 4 5 6 7 0 1 1 1 0 0 1 n = 3 k = 1 Find bit at position k in Sn ALGORITHM STEPS 1 Calculate Length len(Sn) = 2^n - 1 len(S3) = 2^3 - 1 = 7 2 Find Middle Position mid = (len + 1) / 2 mid = 4 (middle bit = "1") 3 Compare k with mid k=1 is less than mid=4 --> k is in left half 4 Recursive Resolution Left half = S(n-1) Return findKthBit(n-1, k) Recursive Calls: find(3,1) --> find(2,1) find(2,1) --> find(1,1) find(1,1) --> return S1[1] = "0" Base case: n=1, return "0" FINAL RESULT The kth bit in Sn is: 0 Verification: S3 = "0111001" Position k=1 contains bit "0" [OK] Answer confirmed! Output: 0 Time: O(n) | Space: O(n) Key Insight: The string Sn has a recursive structure: Si = Si-1 + "1" + reverse(invert(Si-1)). If k is in the left half, recurse on Si-1. If k is in the right half, find the mirrored position in the left half and invert the result. The middle bit is always "1". No need to build the string! TutorialsPoint - Find Kth Bit in Nth Binary String | Recursive Pattern Recognition
Asked in
Google 25 Microsoft 20 Amazon 15
28.5K Views
Medium Frequency
~15 min Avg. Time
892 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen