File tree 8 files changed +326
-0
lines changed
0100-0199/0150.Evaluate Reverse Polish Notation
8 files changed +326
-0
lines changed Original file line number Diff line number Diff line change @@ -143,6 +143,40 @@ func plusOne(digits []int) []int {
143
143
}
144
144
```
145
145
146
+ ### ** TypeScript**
147
+
148
+ ``` ts
149
+ function plusOne(digits : number []): number [] {
150
+ const n = digits .length ;
151
+ for (let i = n - 1 ; i >= 0 ; i -- ) {
152
+ if (10 > ++ digits [i ]) {
153
+ return digits ;
154
+ }
155
+ digits [i ] %= 10 ;
156
+ }
157
+ return [1 , ... digits ];
158
+ }
159
+ ```
160
+
161
+ ### ** Rust**
162
+
163
+ ``` rust
164
+ impl Solution {
165
+ pub fn plus_one (mut digits : Vec <i32 >) -> Vec <i32 > {
166
+ let n = digits . len ();
167
+ for i in (0 .. n ). rev () {
168
+ digits [i ] += 1 ;
169
+ if 10 > digits [i ] {
170
+ return digits ;
171
+ }
172
+ digits [i ] %= 10 ;
173
+ }
174
+ digits . insert (0 , 1 );
175
+ digits
176
+ }
177
+ }
178
+ ```
179
+
146
180
### ** ...**
147
181
148
182
```
Original file line number Diff line number Diff line change @@ -139,6 +139,40 @@ func plusOne(digits []int) []int {
139
139
}
140
140
```
141
141
142
+ ### ** TypeScript**
143
+
144
+ ``` ts
145
+ function plusOne(digits : number []): number [] {
146
+ const n = digits .length ;
147
+ for (let i = n - 1 ; i >= 0 ; i -- ) {
148
+ if (10 > ++ digits [i ]) {
149
+ return digits ;
150
+ }
151
+ digits [i ] %= 10 ;
152
+ }
153
+ return [1 , ... digits ];
154
+ }
155
+ ```
156
+
157
+ ### ** Rust**
158
+
159
+ ``` rust
160
+ impl Solution {
161
+ pub fn plus_one (mut digits : Vec <i32 >) -> Vec <i32 > {
162
+ let n = digits . len ();
163
+ for i in (0 .. n ). rev () {
164
+ digits [i ] += 1 ;
165
+ if 10 > digits [i ] {
166
+ return digits ;
167
+ }
168
+ digits [i ] %= 10 ;
169
+ }
170
+ digits . insert (0 , 1 );
171
+ digits
172
+ }
173
+ }
174
+ ```
175
+
142
176
### ** ...**
143
177
144
178
```
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn plus_one ( mut digits : Vec < i32 > ) -> Vec < i32 > {
3
+ let n = digits. len ( ) ;
4
+ for i in ( 0 ..n) . rev ( ) {
5
+ digits[ i] += 1 ;
6
+ if 10 > digits[ i] {
7
+ return digits;
8
+ }
9
+ digits[ i] %= 10 ;
10
+ }
11
+ digits. insert ( 0 , 1 ) ;
12
+ digits
13
+ }
14
+ }
Original file line number Diff line number Diff line change
1
+ function plusOne ( digits : number [ ] ) : number [ ] {
2
+ const n = digits . length ;
3
+ for ( let i = n - 1 ; i >= 0 ; i -- ) {
4
+ if ( 10 > ++ digits [ i ] ) {
5
+ return digits ;
6
+ }
7
+ digits [ i ] %= 10 ;
8
+ }
9
+ return [ 1 , ...digits ] ;
10
+ }
Original file line number Diff line number Diff line change @@ -225,6 +225,99 @@ func popInt(stack *arraystack.Stack) int {
225
225
}
226
226
```
227
227
228
+ ### ** C#**
229
+
230
+ ``` cs
231
+ using System .Collections .Generic ;
232
+
233
+ public class Solution {
234
+ public int EvalRPN (string [] tokens ) {
235
+ var stack = new Stack <int >();
236
+ foreach (var token in tokens )
237
+ {
238
+ switch (token )
239
+ {
240
+ case " +" :
241
+ stack .Push (stack .Pop () + stack .Pop ());
242
+ break ;
243
+ case " -" :
244
+ stack .Push (- stack .Pop () + stack .Pop ());
245
+ break ;
246
+ case " *" :
247
+ stack .Push (stack .Pop () * stack .Pop ());
248
+ break ;
249
+ case " /" :
250
+ var right = stack .Pop ();
251
+ stack .Push (stack .Pop () / right );
252
+ break ;
253
+ default :
254
+ stack .Push (int .Parse (token ));
255
+ break ;
256
+ }
257
+ }
258
+ return stack .Pop ();
259
+ }
260
+ }
261
+ ```
262
+
263
+ ### ** TypeScript**
264
+
265
+ ``` ts
266
+ function evalRPN(tokens : string []): number {
267
+ const stack = [];
268
+ for (const token of tokens ) {
269
+ if (/ \d / .test (token )) {
270
+ stack .push (Number (token ));
271
+ } else {
272
+ const a = stack .pop ();
273
+ const b = stack .pop ();
274
+ switch (token ) {
275
+ case ' +' :
276
+ stack .push (b + a );
277
+ break ;
278
+ case ' -' :
279
+ stack .push (b - a );
280
+ break ;
281
+ case ' *' :
282
+ stack .push (b * a );
283
+ break ;
284
+ case ' /' :
285
+ stack .push (~~ (b / a ));
286
+ break ;
287
+ }
288
+ }
289
+ }
290
+ return stack [0 ];
291
+ }
292
+ ```
293
+
294
+ ### ** Rust**
295
+
296
+ ``` rust
297
+ impl Solution {
298
+ pub fn eval_rpn (tokens : Vec <String >) -> i32 {
299
+ let mut stack = vec! [];
300
+ for token in tokens {
301
+ match token . parse () {
302
+ Ok (num ) => stack . push (num ),
303
+ Err (_ ) => {
304
+ let a = stack . pop (). unwrap ();
305
+ let b = stack . pop (). unwrap ();
306
+ stack . push (match token . as_str () {
307
+ " +" => b + a ,
308
+ " -" => b - a ,
309
+ " *" => b * a ,
310
+ " /" => b / a ,
311
+ _ => 0 ,
312
+ })
313
+ }
314
+ }
315
+ }
316
+ stack [0 ]
317
+ }
318
+ }
319
+ ```
320
+
228
321
### ** ...**
229
322
230
323
```
Original file line number Diff line number Diff line change @@ -193,6 +193,99 @@ func popInt(stack *arraystack.Stack) int {
193
193
}
194
194
```
195
195
196
+ ### ** C#**
197
+
198
+ ``` cs
199
+ using System .Collections .Generic ;
200
+
201
+ public class Solution {
202
+ public int EvalRPN (string [] tokens ) {
203
+ var stack = new Stack <int >();
204
+ foreach (var token in tokens )
205
+ {
206
+ switch (token )
207
+ {
208
+ case " +" :
209
+ stack .Push (stack .Pop () + stack .Pop ());
210
+ break ;
211
+ case " -" :
212
+ stack .Push (- stack .Pop () + stack .Pop ());
213
+ break ;
214
+ case " *" :
215
+ stack .Push (stack .Pop () * stack .Pop ());
216
+ break ;
217
+ case " /" :
218
+ var right = stack .Pop ();
219
+ stack .Push (stack .Pop () / right );
220
+ break ;
221
+ default :
222
+ stack .Push (int .Parse (token ));
223
+ break ;
224
+ }
225
+ }
226
+ return stack .Pop ();
227
+ }
228
+ }
229
+ ```
230
+
231
+ ### ** TypeScript**
232
+
233
+ ``` ts
234
+ function evalRPN(tokens : string []): number {
235
+ const stack = [];
236
+ for (const token of tokens ) {
237
+ if (/ \d / .test (token )) {
238
+ stack .push (Number (token ));
239
+ } else {
240
+ const a = stack .pop ();
241
+ const b = stack .pop ();
242
+ switch (token ) {
243
+ case ' +' :
244
+ stack .push (b + a );
245
+ break ;
246
+ case ' -' :
247
+ stack .push (b - a );
248
+ break ;
249
+ case ' *' :
250
+ stack .push (b * a );
251
+ break ;
252
+ case ' /' :
253
+ stack .push (~~ (b / a ));
254
+ break ;
255
+ }
256
+ }
257
+ }
258
+ return stack [0 ];
259
+ }
260
+ ```
261
+
262
+ ### ** Rust**
263
+
264
+ ``` rust
265
+ impl Solution {
266
+ pub fn eval_rpn (tokens : Vec <String >) -> i32 {
267
+ let mut stack = vec! [];
268
+ for token in tokens {
269
+ match token . parse () {
270
+ Ok (num ) => stack . push (num ),
271
+ Err (_ ) => {
272
+ let a = stack . pop (). unwrap ();
273
+ let b = stack . pop (). unwrap ();
274
+ stack . push (match token . as_str () {
275
+ " +" => b + a ,
276
+ " -" => b - a ,
277
+ " *" => b * a ,
278
+ " /" => b / a ,
279
+ _ => 0 ,
280
+ })
281
+ }
282
+ }
283
+ }
284
+ stack [0 ]
285
+ }
286
+ }
287
+ ```
288
+
196
289
### ** ...**
197
290
198
291
```
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn eval_rpn ( tokens : Vec < String > ) -> i32 {
3
+ let mut stack = vec ! [ ] ;
4
+ for token in tokens {
5
+ match token. parse ( ) {
6
+ Ok ( num) => stack. push ( num) ,
7
+ Err ( _) => {
8
+ let a = stack. pop ( ) . unwrap ( ) ;
9
+ let b = stack. pop ( ) . unwrap ( ) ;
10
+ stack. push ( match token. as_str ( ) {
11
+ "+" => b + a,
12
+ "-" => b - a,
13
+ "*" => b * a,
14
+ "/" => b / a,
15
+ _ => 0 ,
16
+ } )
17
+ }
18
+ }
19
+ }
20
+ stack[ 0 ]
21
+ }
22
+ }
Original file line number Diff line number Diff line change
1
+ function evalRPN ( tokens : string [ ] ) : number {
2
+ const stack = [ ] ;
3
+ for ( const token of tokens ) {
4
+ if ( / \d / . test ( token ) ) {
5
+ stack . push ( Number ( token ) ) ;
6
+ } else {
7
+ const a = stack . pop ( ) ;
8
+ const b = stack . pop ( ) ;
9
+ switch ( token ) {
10
+ case '+' :
11
+ stack . push ( b + a ) ;
12
+ break ;
13
+ case '-' :
14
+ stack . push ( b - a ) ;
15
+ break ;
16
+ case '*' :
17
+ stack . push ( b * a ) ;
18
+ break ;
19
+ case '/' :
20
+ stack . push ( ~ ~ ( b / a ) ) ;
21
+ break ;
22
+ }
23
+ }
24
+ }
25
+ return stack [ 0 ] ;
26
+ }
You can’t perform that action at this time.
0 commit comments