题目
示例 1:
输入:n = 3, k = 1 输出:"0" 解释:S3 为 "0111001",其第 1 位为 "0" 。
示例 2:
输入:n = 4, k = 11 输出:"1" 解释:S4 为 "011100110110001",其第 11 位为 "1" 。
示例 3:
输入:n = 1, k = 1 输出:"0"
示例 4:
输入:n = 2, k = 3 输出:"1"
提示:
1 <= n <= 20 1 <= k <= 2n - 1
解题
方法一:暴力模拟(不推荐)
好在n小于等于20,可以这么做
class Solution { public: char findKthBit(int n, int k) { string s="0"; if(n==1) return s[0]; for(int i=2;i<=n;i++){ string tmp; for(char c:s){ if(c=='0') tmp+='1'; else tmp+='0'; } reverse(tmp.begin(),tmp.end()); s=s+"1"+tmp; } return s[k-1]; } };