赞
踩
你的笔记本键盘存在故障,每当你在上面输入字符
'i'
时,它会反转你所写的字符串。而输入其他字符则可以正常工作。给你一个下标从 0 开始的字符串
s
,请你用故障键盘依次输入每个字符。返回最终笔记本屏幕上输出的字符串。
- class Solution {
- public:
- string finalString(string s) {
-
- }
- };
- class Solution:
- def finalString(self, s: str) -> str:
反转<=>往字符串的头部添加字符
那么遍历的时候维护方向然后添加字符即可
这要求两端都能添加元素的数据结构所以可以想到双端队列
时间复杂度:O(n) 空间复杂度:O(n)
- class Solution {
- public:
- string finalString(string s) {
- deque<char> dq;
- bool rev = 0;
- for(char ch : s){
- if(ch == 'i') rev ^= 1;
- else if(rev) dq.push_front(ch);
- else dq.push_back(ch);
- }
- return rev ? string(dq.rbegin(), dq.rend()) : string(dq.begin(), dq.end());
- }
- };
- class Solution:
- def finalString(self, s: str) -> str:
- q = deque()
- rev = True
- for x in s:
- if x == 'i':
- rev = not rev
- elif rev:
- q.append(x)
- else:
- q.appendleft(x)
- return ''.join(q if rev else reversed(q))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。