1545. 找出第 N 个二进制字符串中的第 K 位 LeetCode周赛
传送门
结题思路
思路1:首先,Sn的长度为2的(n-1)次-1,其前半段的字符串为Sn-1,中间一个为“1”,后半段的为Sn-1取反后反转。最后找到的结果要么是中间的"1",要么是从“0”变来的。
// 递归条件判断
class Solution {
public char char_not(char a)
{
if(a == '1')
{
return '0';
}
else
{
return '1';
}
}
public char findKthBit(int n, int k) {
if(n == 1)
{
return '0';
}
int midPos = (1<<n-1);
if(k == midPos)
{
return '1';
}
else if(k < midPos)
{
return findKthBit(n-1, k);
}
return char_not(findKthBit(n-1, 2*midPos -k));
}
}