题目解析
上图所示,是第1~6个字符串,可以发现第6个已经很长了,那么本题的最多要求到第64个字符串,那么有多长呢?答:2^63,即 2^(n-1)。这个长度如果用字符串来存储的话,肯定爆内存,因此任何需要缓存字符串的动作都是禁止的。
我们只能找规律,来通过规律推导出第n个字符串的第k个字符。
那么规律是啥呢?
如上图黄框所示,我们可以发现,
第6个字符串的后半部分,和第5个字符串完全相同;
同理,
第5个字符串的后半部分,和第4个字符串完全相同;
第4个字符串的后半部分,和第3个字符串完全相同;
第3个字符串的后半部分,和第2个字符串完全相同;
第2个字符串的后半部分,和第1个字符串完全相同;
因此,如果我们要找到的 k 位于第 n 个字符串的后半部分,假设为get(n, k),那么其等价于 get(n-1, k - 2^(n-2)),按此逻辑递归,就可以一直