M3612.用特殊操作处理字符串 I
implementation, https://leetcode.cn/problems/process-string-with-special-operations-i/
给你一个字符串 s,它由小写英文字母和特殊字符:*、# 和 % 组成。
请根据以下规则从左到右处理 s 中的字符,构造一个新的字符串 result:
- 如果字符是 小写 英文字母,则将其添加到
result中。 - 字符
'*'会 删除result中的最后一个字符(如果存在)。 - 字符
'#'会 复制 当前的result并 追加 到其自身后面。 - 字符
'%'会 反转 当前的result。
在处理完 s 中的所有字符后,返回最终的字符串 result。
示例 1:
输入: s = "a#b%*"
输出: "ba"
解释:
i | s[i] | 操作 | 当前 result |
|---|---|---|---|
| 0 | 'a' | 添加 'a' | "a" |
| 1 | '#' | 复制 result | "aa" |
| 2 | 'b' | 添加 'b' | "aab" |
| 3 | '%' | 反转 result | "baa" |
| 4 | '*' | 删除最后一个字符 | "ba" |
因此,最终的 result 是 "ba"。
示例 2:
输入: s = "z*#"
输出: ""
解释:
i | s[i] | 操作 | 当前 result |
|---|---|---|---|
| 0 | 'z' | 添加 'z' | "z" |
| 1 | '*' | 删除最后一个字符 | "" |
| 2 | '#' | 复制字符串 | "" |
因此,最终的 result 是 ""。
提示:
1 <= s.length <= 20s只包含小写英文字母和特殊字符*、#和%。
python
class Solution:
def processStr(self, s: str) -> str:
result = []
for c in s:
if c.islower():
result.append(c)
elif c == '*':
if result:
result.pop()
elif c == '#':
result = result + result
elif c == '%':
result.reverse()
return ''.join(result)