Description
You are given a string s
consisting of lowercase English letters and the special characters: *
, #
, and %
.
Build a new string result
by processing s
according to the following rules from left to right:
- If the letter is a lowercase English letter append it to
result
. - A
'*'
removes the last character fromresult
, if it exists. - A
'#'
duplicates the currentresult
and appends it to itself. - A
'%'
reverses the currentresult
.
Return the final string result
after processing all characters in s
.
Β
Example 1:
Input: s = "a#b%*"
Output: "ba"
Explanation:
i | s[i] | Operation | Current result |
---|---|---|---|
0 | 'a' | Append 'a' | "a" |
1 | '#' | Duplicate result | "aa" |
2 | 'b' | Append 'b' | "aab" |
3 | '%' | Reverse result | "baa" |
4 | '*' | Remove the last character | "ba" |
Thus, the final result
is "ba"
.
Example 2:
Input: s = "z*#"
Output: ""
Explanation:
i | s[i] | Operation | Current result |
---|---|---|---|
0 | 'z' | Append 'z' | "z" |
1 | '*' | Remove the last character | "" |
2 | '#' | Duplicate the string | "" |
Thus, the final result
is ""
.
Β
Constraints:
1 <= s.length <= 20
s
consists of only lowercase English letters and special characters*
,#
, and%
.
Solution
Python3
class Solution:
def processStr(self, s: str) -> str:
stack = []
for x in s:
if x == '*':
if stack: stack.pop()
elif x == "#":
stack.extend(stack[:])
elif x == "%":
stack.reverse()
else:
stack.append(x)
return "".join(stack)