1545. Find Kth Bit in Nth Binary String

Difficulty:
Related Topics:
Similar Questions:

    Problem

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

    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:

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

      Example 1:

    Input: n = 3, k = 1
    Output: "0"
    Explanation: S3 is "0111001".
    The 1st bit is "0".
    

    Example 2:

    Input: n = 4, k = 11
    Output: "1"
    Explanation: S4 is "011100110110001".
    The 11th bit is "1".
    

      Constraints:

    Solution (Java)

    class Solution {
        public char findKthBit(int n, int k) {
            boolean flip = false;
            while (k != 1) {
                int base = floorTwo(k);
                if (base == k) {
                    return flip ? '0' : '1';
                }
                flip = !flip;
                k = base - (k - base);
            }
            return flip ? '1' : '0';
        }
    
        private int floorTwo(int k) {
            while ((k & (k - 1)) > 0) {
                k &= k - 1;
            }
            return k;
        }
    }
    

    Explain:

    nope.

    Complexity: