Skip to content

Commit 456bb69

Browse files
committed
feat: add weekly contest 458
1 parent 3e0f23e commit 456bb69

File tree

20 files changed

+1557
-1
lines changed

20 files changed

+1557
-1
lines changed
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
---
2+
comments: true
3+
difficulty: 中等
4+
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3600-3699/3612.Process%20String%20with%20Special%20Operations%20I/README.md
5+
---
6+
7+
<!-- problem:start -->
8+
9+
# [3612. 用特殊操作处理字符串 I](https://leetcode.cn/problems/process-string-with-special-operations-i)
10+
11+
[English Version](/solution/3600-3699/3612.Process%20String%20with%20Special%20Operations%20I/README_EN.md)
12+
13+
## 题目描述
14+
15+
<!-- description:start -->
16+
17+
<p>给你一个字符串 <code>s</code>,它由小写英文字母和特殊字符:<code>*</code>、<code>#</code> 和 <code>%</code> 组成。</p>
18+
19+
<p>请根据以下规则从左到右处理 <code>s</code>&nbsp;中的字符,构造一个新的字符串 <code>result</code>:</p>
20+
21+
<ul>
22+
<li>如果字符是 <strong>小写</strong> 英文字母,则将其添加到 <code>result</code> 中。</li>
23+
<li>字符 <code>'*'</code> 会&nbsp;<strong>删除</strong> <code>result</code> 中的最后一个字符(如果存在)。</li>
24+
<li>字符 <code>'#'</code> 会&nbsp;<strong>复制&nbsp;</strong>当前的 <code>result</code> 并&nbsp;<strong>追加&nbsp;</strong>到其自身后面。</li>
25+
<li>字符 <code>'%'</code> 会&nbsp;<strong>反转&nbsp;</strong>当前的 <code>result</code>。</li>
26+
</ul>
27+
28+
<p>在处理完 <code>s</code> 中的所有字符后,返回最终的字符串 <code>result</code>。</p>
29+
30+
<p>&nbsp;</p>
31+
32+
<p><strong class="example">示例 1:</strong></p>
33+
34+
<div class="example-block">
35+
<p><strong>输入:</strong> <span class="example-io">s = "a#b%*"</span></p>
36+
37+
<p><strong>输出:</strong> <span class="example-io">"ba"</span></p>
38+
39+
<p><strong>解释:</strong></p>
40+
41+
<table style="border: 1px solid black;">
42+
<thead>
43+
<tr>
44+
<th style="border: 1px solid black;"><code>i</code></th>
45+
<th style="border: 1px solid black;"><code>s[i]</code></th>
46+
<th style="border: 1px solid black;">操作</th>
47+
<th style="border: 1px solid black;">当前 <code>result</code></th>
48+
</tr>
49+
</thead>
50+
<tbody>
51+
<tr>
52+
<td style="border: 1px solid black;">0</td>
53+
<td style="border: 1px solid black;"><code>'a'</code></td>
54+
<td style="border: 1px solid black;">添加 <code>'a'</code></td>
55+
<td style="border: 1px solid black;"><code>"a"</code></td>
56+
</tr>
57+
<tr>
58+
<td style="border: 1px solid black;">1</td>
59+
<td style="border: 1px solid black;"><code>'#'</code></td>
60+
<td style="border: 1px solid black;">复制 <code>result</code></td>
61+
<td style="border: 1px solid black;"><code>"aa"</code></td>
62+
</tr>
63+
<tr>
64+
<td style="border: 1px solid black;">2</td>
65+
<td style="border: 1px solid black;"><code>'b'</code></td>
66+
<td style="border: 1px solid black;">添加 <code>'b'</code></td>
67+
<td style="border: 1px solid black;"><code>"aab"</code></td>
68+
</tr>
69+
<tr>
70+
<td style="border: 1px solid black;">3</td>
71+
<td style="border: 1px solid black;"><code>'%'</code></td>
72+
<td style="border: 1px solid black;">反转 <code>result</code></td>
73+
<td style="border: 1px solid black;"><code>"baa"</code></td>
74+
</tr>
75+
<tr>
76+
<td style="border: 1px solid black;">4</td>
77+
<td style="border: 1px solid black;"><code>'*'</code></td>
78+
<td style="border: 1px solid black;">删除最后一个字符</td>
79+
<td style="border: 1px solid black;"><code>"ba"</code></td>
80+
</tr>
81+
</tbody>
82+
</table>
83+
84+
<p>因此,最终的 <code>result</code> 是 <code>"ba"</code>。</p>
85+
</div>
86+
87+
<p><strong class="example">示例 2:</strong></p>
88+
89+
<div class="example-block">
90+
<p><strong>输入:</strong> <span class="example-io">s = "z*#"</span></p>
91+
92+
<p><strong>输出:</strong> <span class="example-io">""</span></p>
93+
94+
<p><strong>解释:</strong></p>
95+
96+
<table style="border: 1px solid black;">
97+
<thead>
98+
<tr>
99+
<th style="border: 1px solid black;"><code>i</code></th>
100+
<th style="border: 1px solid black;"><code>s[i]</code></th>
101+
<th style="border: 1px solid black;">操作</th>
102+
<th style="border: 1px solid black;">当前 <code>result</code></th>
103+
</tr>
104+
</thead>
105+
<tbody>
106+
<tr>
107+
<td style="border: 1px solid black;">0</td>
108+
<td style="border: 1px solid black;"><code>'z'</code></td>
109+
<td style="border: 1px solid black;">添加 <code>'z'</code></td>
110+
<td style="border: 1px solid black;"><code>"z"</code></td>
111+
</tr>
112+
<tr>
113+
<td style="border: 1px solid black;">1</td>
114+
<td style="border: 1px solid black;"><code>'*'</code></td>
115+
<td style="border: 1px solid black;">删除最后一个字符</td>
116+
<td style="border: 1px solid black;"><code>""</code></td>
117+
</tr>
118+
<tr>
119+
<td style="border: 1px solid black;">2</td>
120+
<td style="border: 1px solid black;"><code>'#'</code></td>
121+
<td style="border: 1px solid black;">复制字符串</td>
122+
<td style="border: 1px solid black;"><code>""</code></td>
123+
</tr>
124+
</tbody>
125+
</table>
126+
127+
<p>因此,最终的 <code>result</code> 是 <code>""</code>。</p>
128+
</div>
129+
130+
<p>&nbsp;</p>
131+
132+
<p><strong>提示:</strong></p>
133+
134+
<ul>
135+
<li><code>1 &lt;= s.length &lt;= 20</code></li>
136+
<li><code>s</code> 只包含小写英文字母和特殊字符 <code>*</code>、<code>#</code> 和 <code>%</code>。</li>
137+
</ul>
138+
139+
<!-- description:end -->
140+
141+
## 解法
142+
143+
<!-- solution:start -->
144+
145+
### 方法一
146+
147+
<!-- tabs:start -->
148+
149+
#### Python3
150+
151+
```python
152+
153+
```
154+
155+
#### Java
156+
157+
```java
158+
159+
```
160+
161+
#### C++
162+
163+
```cpp
164+
165+
```
166+
167+
#### Go
168+
169+
```go
170+
171+
```
172+
173+
<!-- tabs:end -->
174+
175+
<!-- solution:end -->
176+
177+
<!-- problem:end -->
Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
---
2+
comments: true
3+
difficulty: Medium
4+
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3600-3699/3612.Process%20String%20with%20Special%20Operations%20I/README_EN.md
5+
---
6+
7+
<!-- problem:start -->
8+
9+
# [3612. Process String with Special Operations I](https://leetcode.com/problems/process-string-with-special-operations-i)
10+
11+
[中文文档](/solution/3600-3699/3612.Process%20String%20with%20Special%20Operations%20I/README.md)
12+
13+
## Description
14+
15+
<!-- description:start -->
16+
17+
<p>You are given a string <code>s</code> consisting of lowercase English letters and the special characters: <code>*</code>, <code>#</code>, and <code>%</code>.</p>
18+
19+
<p>Build a new string <code>result</code> by processing <code>s</code> according to the following rules from left to right:</p>
20+
21+
<ul>
22+
<li>If the letter is a <strong>lowercase</strong> English letter append it to <code>result</code>.</li>
23+
<li>A <code>&#39;*&#39;</code> <strong>removes</strong> the last character from <code>result</code>, if it exists.</li>
24+
<li>A <code>&#39;#&#39;</code> <strong>duplicates</strong> the current <code>result</code> and <strong>appends</strong> it to itself.</li>
25+
<li>A <code>&#39;%&#39;</code> <strong>reverses</strong> the current <code>result</code>.</li>
26+
</ul>
27+
28+
<p>Return the final string <code>result</code> after processing all characters in <code>s</code>.</p>
29+
30+
<p>&nbsp;</p>
31+
<p><strong class="example">Example 1:</strong></p>
32+
33+
<div class="example-block">
34+
<p><strong>Input:</strong> <span class="example-io">s = &quot;a#b%*&quot;</span></p>
35+
36+
<p><strong>Output:</strong> <span class="example-io">&quot;ba&quot;</span></p>
37+
38+
<p><strong>Explanation:</strong></p>
39+
40+
<table style="border: 1px solid black;">
41+
<thead>
42+
<tr>
43+
<th style="border: 1px solid black;"><code>i</code></th>
44+
<th style="border: 1px solid black;"><code>s[i]</code></th>
45+
<th style="border: 1px solid black;">Operation</th>
46+
<th style="border: 1px solid black;">Current <code>result</code></th>
47+
</tr>
48+
</thead>
49+
<tbody>
50+
<tr>
51+
<td style="border: 1px solid black;">0</td>
52+
<td style="border: 1px solid black;"><code>&#39;a&#39;</code></td>
53+
<td style="border: 1px solid black;">Append <code>&#39;a&#39;</code></td>
54+
<td style="border: 1px solid black;"><code>&quot;a&quot;</code></td>
55+
</tr>
56+
<tr>
57+
<td style="border: 1px solid black;">1</td>
58+
<td style="border: 1px solid black;"><code>&#39;#&#39;</code></td>
59+
<td style="border: 1px solid black;">Duplicate <code>result</code></td>
60+
<td style="border: 1px solid black;"><code>&quot;aa&quot;</code></td>
61+
</tr>
62+
<tr>
63+
<td style="border: 1px solid black;">2</td>
64+
<td style="border: 1px solid black;"><code>&#39;b&#39;</code></td>
65+
<td style="border: 1px solid black;">Append <code>&#39;b&#39;</code></td>
66+
<td style="border: 1px solid black;"><code>&quot;aab&quot;</code></td>
67+
</tr>
68+
<tr>
69+
<td style="border: 1px solid black;">3</td>
70+
<td style="border: 1px solid black;"><code>&#39;%&#39;</code></td>
71+
<td style="border: 1px solid black;">Reverse <code>result</code></td>
72+
<td style="border: 1px solid black;"><code>&quot;baa&quot;</code></td>
73+
</tr>
74+
<tr>
75+
<td style="border: 1px solid black;">4</td>
76+
<td style="border: 1px solid black;"><code>&#39;*&#39;</code></td>
77+
<td style="border: 1px solid black;">Remove the last character</td>
78+
<td style="border: 1px solid black;"><code>&quot;ba&quot;</code></td>
79+
</tr>
80+
</tbody>
81+
</table>
82+
83+
<p>Thus, the final <code>result</code> is <code>&quot;ba&quot;</code>.</p>
84+
</div>
85+
86+
<p><strong class="example">Example 2:</strong></p>
87+
88+
<div class="example-block">
89+
<p><strong>Input:</strong> <span class="example-io">s = &quot;z*#&quot;</span></p>
90+
91+
<p><strong>Output:</strong> <span class="example-io">&quot;&quot;</span></p>
92+
93+
<p><strong>Explanation:</strong></p>
94+
95+
<table style="border: 1px solid black;">
96+
<thead>
97+
<tr>
98+
<th style="border: 1px solid black;"><code>i</code></th>
99+
<th style="border: 1px solid black;"><code>s[i]</code></th>
100+
<th style="border: 1px solid black;">Operation</th>
101+
<th style="border: 1px solid black;">Current <code>result</code></th>
102+
</tr>
103+
</thead>
104+
<tbody>
105+
<tr>
106+
<td style="border: 1px solid black;">0</td>
107+
<td style="border: 1px solid black;"><code>&#39;z&#39;</code></td>
108+
<td style="border: 1px solid black;">Append <code>&#39;z&#39;</code></td>
109+
<td style="border: 1px solid black;"><code>&quot;z&quot;</code></td>
110+
</tr>
111+
<tr>
112+
<td style="border: 1px solid black;">1</td>
113+
<td style="border: 1px solid black;"><code>&#39;*&#39;</code></td>
114+
<td style="border: 1px solid black;">Remove the last character</td>
115+
<td style="border: 1px solid black;"><code>&quot;&quot;</code></td>
116+
</tr>
117+
<tr>
118+
<td style="border: 1px solid black;">2</td>
119+
<td style="border: 1px solid black;"><code>&#39;#&#39;</code></td>
120+
<td style="border: 1px solid black;">Duplicate the string</td>
121+
<td style="border: 1px solid black;"><code>&quot;&quot;</code></td>
122+
</tr>
123+
</tbody>
124+
</table>
125+
126+
<p>Thus, the final <code>result</code> is <code>&quot;&quot;</code>.</p>
127+
</div>
128+
129+
<p>&nbsp;</p>
130+
<p><strong>Constraints:</strong></p>
131+
132+
<ul>
133+
<li><code>1 &lt;= s.length &lt;= 20</code></li>
134+
<li><code>s</code> consists of only lowercase English letters and special characters <code>*</code>, <code>#</code>, and <code>%</code>.</li>
135+
</ul>
136+
137+
<!-- description:end -->
138+
139+
## Solutions
140+
141+
<!-- solution:start -->
142+
143+
### Solution 1
144+
145+
<!-- tabs:start -->
146+
147+
#### Python3
148+
149+
```python
150+
151+
```
152+
153+
#### Java
154+
155+
```java
156+
157+
```
158+
159+
#### C++
160+
161+
```cpp
162+
163+
```
164+
165+
#### Go
166+
167+
```go
168+
169+
```
170+
171+
<!-- tabs:end -->
172+
173+
<!-- solution:end -->
174+
175+
<!-- problem:end -->

0 commit comments

Comments
 (0)