3614. Process String with Special Operations II Hard
1/**
2 * [3614] Process String with Special Operations II
3 *
4 * You are given a string s consisting of lowercase English letters and the special characters: '*', '#', and '%'.
5 * You are also given an integer k.
6 * Build a new string result by processing s according to the following rules from left to right:
7 *
8 * If the letter is a lowercase English letter append it to result.
9 * A '*' removes the last character from result, if it exists.
10 * A '#' duplicates the current result and appends it to itself.
11 * A '%' reverses the current result.
12 *
13 * Return the k^th character of the final string result. If k is out of the bounds of result, return '.'.
14 *
15 * <strong class="example">Example 1:
16 * <div class="example-block">
17 * Input: <span class="example-io">s = "a#b%*", k = 1</span>
18 * Output: <span class="example-io">"a"</span>
19 * Explanation:
20 * <table style="border: 1px solid black;">
21 * <thead>
22 * <tr>
23 * <th style="border: 1px solid black;">i</th>
24 * <th style="border: 1px solid black;">s[i]</th>
25 * <th style="border: 1px solid black;">Operation</th>
26 * <th style="border: 1px solid black;">Current result</th>
27 * </tr>
28 * </thead>
29 * <tbody>
30 * <tr>
31 * <td style="border: 1px solid black;">0</td>
32 * <td style="border: 1px solid black;">'a'</td>
33 * <td style="border: 1px solid black;">Append 'a'</td>
34 * <td style="border: 1px solid black;">"a"</td>
35 * </tr>
36 * <tr>
37 * <td style="border: 1px solid black;">1</td>
38 * <td style="border: 1px solid black;">'#'</td>
39 * <td style="border: 1px solid black;">Duplicate result</td>
40 * <td style="border: 1px solid black;">"aa"</td>
41 * </tr>
42 * <tr>
43 * <td style="border: 1px solid black;">2</td>
44 * <td style="border: 1px solid black;">'b'</td>
45 * <td style="border: 1px solid black;">Append 'b'</td>
46 * <td style="border: 1px solid black;">"aab"</td>
47 * </tr>
48 * <tr>
49 * <td style="border: 1px solid black;">3</td>
50 * <td style="border: 1px solid black;">'%'</td>
51 * <td style="border: 1px solid black;">Reverse result</td>
52 * <td style="border: 1px solid black;">"baa"</td>
53 * </tr>
54 * <tr>
55 * <td style="border: 1px solid black;">4</td>
56 * <td style="border: 1px solid black;">'*'</td>
57 * <td style="border: 1px solid black;">Remove the last character</td>
58 * <td style="border: 1px solid black;">"ba"</td>
59 * </tr>
60 * </tbody>
61 * </table>
62 * The final result is "ba". The character at index k = 1 is 'a'.
63 * </div>
64 * <strong class="example">Example 2:
65 * <div class="example-block">
66 * Input: <span class="example-io">s = "cd%#*#", k = 3</span>
67 * Output: <span class="example-io">"d"</span>
68 * Explanation:
69 * <table style="border: 1px solid black;">
70 * <thead>
71 * <tr>
72 * <th style="border: 1px solid black;">i</th>
73 * <th style="border: 1px solid black;">s[i]</th>
74 * <th style="border: 1px solid black;">Operation</th>
75 * <th style="border: 1px solid black;">Current result</th>
76 * </tr>
77 * </thead>
78 * <tbody>
79 * <tr>
80 * <td style="border: 1px solid black;">0</td>
81 * <td style="border: 1px solid black;">'c'</td>
82 * <td style="border: 1px solid black;">Append 'c'</td>
83 * <td style="border: 1px solid black;">"c"</td>
84 * </tr>
85 * <tr>
86 * <td style="border: 1px solid black;">1</td>
87 * <td style="border: 1px solid black;">'d'</td>
88 * <td style="border: 1px solid black;">Append 'd'</td>
89 * <td style="border: 1px solid black;">"cd"</td>
90 * </tr>
91 * <tr>
92 * <td style="border: 1px solid black;">2</td>
93 * <td style="border: 1px solid black;">'%'</td>
94 * <td style="border: 1px solid black;">Reverse result</td>
95 * <td style="border: 1px solid black;">"dc"</td>
96 * </tr>
97 * <tr>
98 * <td style="border: 1px solid black;">3</td>
99 * <td style="border: 1px solid black;">'#'</td>
100 * <td style="border: 1px solid black;">Duplicate result</td>
101 * <td style="border: 1px solid black;">"dcdc"</td>
102 * </tr>
103 * <tr>
104 * <td style="border: 1px solid black;">4</td>
105 * <td style="border: 1px solid black;">'*'</td>
106 * <td style="border: 1px solid black;">Remove the last character</td>
107 * <td style="border: 1px solid black;">"dcd"</td>
108 * </tr>
109 * <tr>
110 * <td style="border: 1px solid black;">5</td>
111 * <td style="border: 1px solid black;">'#'</td>
112 * <td style="border: 1px solid black;">Duplicate result</td>
113 * <td style="border: 1px solid black;">"dcddcd"</td>
114 * </tr>
115 * </tbody>
116 * </table>
117 * The final result is "dcddcd". The character at index k = 3 is 'd'.
118 * </div>
119 * <strong class="example">Example 3:
120 * <div class="example-block">
121 * Input: <span class="example-io">s = "z*#", k = 0</span>
122 * Output: <span class="example-io">"."</span>
123 * Explanation:
124 * <table style="border: 1px solid black;">
125 * <thead>
126 * <tr>
127 * <th style="border: 1px solid black;">i</th>
128 * <th style="border: 1px solid black;">s[i]</th>
129 * <th style="border: 1px solid black;">Operation</th>
130 * <th style="border: 1px solid black;">Current result</th>
131 * </tr>
132 * </thead>
133 * <tbody>
134 * <tr>
135 * <td style="border: 1px solid black;">0</td>
136 * <td style="border: 1px solid black;">'z'</td>
137 * <td style="border: 1px solid black;">Append 'z'</td>
138 * <td style="border: 1px solid black;">"z"</td>
139 * </tr>
140 * <tr>
141 * <td style="border: 1px solid black;">1</td>
142 * <td style="border: 1px solid black;">'*'</td>
143 * <td style="border: 1px solid black;">Remove the last character</td>
144 * <td style="border: 1px solid black;">""</td>
145 * </tr>
146 * <tr>
147 * <td style="border: 1px solid black;">2</td>
148 * <td style="border: 1px solid black;">'#'</td>
149 * <td style="border: 1px solid black;">Duplicate the string</td>
150 * <td style="border: 1px solid black;">""</td>
151 * </tr>
152 * </tbody>
153 * </table>
154 * The final result is "". Since index k = 0 is out of bounds, the output is '.'.
155 * </div>
156 *
157 * Constraints:
158 *
159 * 1 <= s.length <= 10^5
160 * s consists of only lowercase English letters and special characters '*', '#', and '%'.
161 * 0 <= k <= 10^15
162 * The length of result after processing s will not exceed 10^15.
163 *
164 */
165pub struct Solution {}
166
167// problem: https://leetcode.com/problems/process-string-with-special-operations-ii/
168// discuss: https://leetcode.com/problems/process-string-with-special-operations-ii/discuss/?currentPage=1&orderBy=most_votes&query=
169
170// submission codes start here
171
172impl Solution {
173 pub fn process_str(s: String, k: i64) -> char {
174 '0'
175 }
176}
177
178// submission codes end
179
180#[cfg(test)]
181mod tests {
182 use super::*;
183
184 #[test]
185 fn test_3614() {
186 }
187}
188Back
© 2026 bowen.ge All Rights Reserved.