https://leetcode.com/problems/find-kth-bit-in-nth-binary-string/description/
初始字串 S_1 = '0'
那之後符合 S_i = S_{i - 1} + "1" + reverse(invert(S_{i - 1}))
reverse 就是整個整個字串反轉、 invert 是邏輯反轉 ('1'
變 '0'
, '0'
變 '1'
)
我們要求 S_n
字串中的第 k
個字符 (index 從 1 開始的第 k 個)
首先思考,這題已經給了遞迴表達式,這應該會對解題有某種幫助
如果設 S_n.length()
為 ,則按照遞迴表達我們知道
我們可以想通:
S_n
的長度必為奇數S_n
的中間是只有一個 (由上可知),而且不考慮 S_1
的話一定是 '1'
(根據遞迴表達)這樣的情況想到什麼了?沒錯,我們可以使用 binary search 的概念去求出所求
C++:
Go: