本文共 961 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要根据给定的规则生成二进制字符串 Sn,并找到第 k 位的字符。这个问题可以通过递归和镜像方法高效地解决,而无需生成整个字符串。
问题分析:
关键思路:
递归方法:
class Solution: def check(self, c: str): return "1" if c == "0" else "0" def findKthBit(self, n: int, k: int) -> str: if n == 1: return "0" mid = 1 << (n - 1) if k == mid: return "1" elif k < mid: return self.findKthBit(n - 1, k) else: pos = (1 << n) - k return self.check(self.findKthBit(n - 1, pos))
这种方法高效且递归,最好时间复杂度为 O(log n),适用于给定的约束条件。
转载地址:http://vmgr.baihongyu.com/