1. 解题思路
这一题思路上是一个逆推的思路。
首先,我们顺序走一轮不难得到最终我们能够获得的字符串的总长度 n n n,然后我们就能判断给定的 k k k是否合法。然后,我们只需要将总长度 n n n进行逆推,看其实际是在第几步达到的长度 k k k即可,此时其对应的字符就是我们的目标字符了。
2. 代码实现
给出python代码实现如下:
class Solution:
def processStr(self, s: str, k: int) -> str:
n = 0
for i, ch in enumerate(s):
if ch == "*":
n -= 1 if n > 0 else 0
elif ch == "#":
n += n
elif ch == "%":
n = n
else:
n += 1
if k >= n:
return "."
for ch in s[::-1]:
if ch == "*":
n = n+1
elif ch == "#":
n = n // 2
k = k if k < n else k - n
elif ch == "%":
k = n-1-k
else:
n -= 1
if k == n:
return ch
return "."
提交代码评测得到:耗时377ms,占用内存19.16MB。