LeetCode-in-Java

3612. Process String with Special Operations I

Medium

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:

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:

Solution

public class Solution {
    public String processStr(String s) {
        StringBuilder res = new StringBuilder();
        for (char c : s.toCharArray()) {
            if (c != '*' && c != '#' && c != '%') {
                res.append(c);
            } else if (c == '#') {
                res.append(res);
            } else if (c == '%') {
                res.reverse();
            } else {
                if (!res.isEmpty()) {
                    res.deleteCharAt(res.length() - 1);
                }
            }
        }
        return res.toString();
    }
}