故障键盘
题目要求
解题思路
提示:把反转看成是往字符串的头部添加字符。
具体来说:
如果当前处于「往字符串尾部添加字符」的状态,那么遇到 i 后,改成「往字符串头部添加字符」的状态。
如果当前处于「往字符串头部添加字符」的状态,那么遇到 i 后,改成「往字符串尾部添加字符」的状态。
这可以用双端队列实现。
代码
class Solution:
def finalString(self, s: str) -> str:
q = deque()
tail = True
for c in s:
if c =='i':
tail = not tail
elif tail:
q.append(c)
else:
q.appendleft(c)
return ''.join(q if tail else reversed(q))
复杂度分析
时间复杂度:
O
(
n
)
O(n)
O(n),其中
n
n
n 为
s
s
s 的长度。
空间复杂度:
O
(
n
)
O(n)
O(n)。
参考
灵茶山艾府