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
Binary String Construction: Finding S3[5]S1 = "0"S2 = "011"S3 = "0111001"Pattern: Si = Si-1 + "1" + reverse(invert(Si-1))"011"First Half"1"Middle"001"Second HalfPos 1-3Pos 4Pos 5-7k=5 is in second halfPosition 5 maps to "0" in S3Output: 0
Understanding the Visualization
1
Input
Given n=3, k=5 - find 5th bit in S3
2
Pattern
S3 = S2 + "1" + reverse(invert(S2))
3
Result
Navigate to position 5 without building full string
Key Takeaway
🎯 Key Insight: The recursive structure allows us to find any bit without building exponentially large strings
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