3614. Process String with Special Operations II Hard

@problem@discussion
#String#Simulation



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}
188

Back
© 2026 bowen.ge All Rights Reserved.