mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
Merge pull request #1052 from xiaofei-2020/stack6
添加(0150.逆波兰表达式求值.md):增加typescript版本
This commit is contained in:
@ -210,6 +210,71 @@ var evalRPN = function(tokens) {
|
||||
};
|
||||
```
|
||||
|
||||
TypeScript:
|
||||
|
||||
普通版:
|
||||
|
||||
```typescript
|
||||
function evalRPN(tokens: string[]): number {
|
||||
let helperStack: number[] = [];
|
||||
let temp: number;
|
||||
let i: number = 0;
|
||||
while (i < tokens.length) {
|
||||
let t: string = tokens[i];
|
||||
switch (t) {
|
||||
case '+':
|
||||
temp = helperStack.pop()! + helperStack.pop()!;
|
||||
helperStack.push(temp);
|
||||
break;
|
||||
case '-':
|
||||
temp = helperStack.pop()!;
|
||||
temp = helperStack.pop()! - temp;
|
||||
helperStack.push(temp);
|
||||
break;
|
||||
case '*':
|
||||
temp = helperStack.pop()! * helperStack.pop()!;
|
||||
helperStack.push(temp);
|
||||
break;
|
||||
case '/':
|
||||
temp = helperStack.pop()!;
|
||||
temp = Math.trunc(helperStack.pop()! / temp);
|
||||
helperStack.push(temp);
|
||||
break;
|
||||
default:
|
||||
helperStack.push(Number(t));
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return helperStack.pop()!;
|
||||
};
|
||||
```
|
||||
|
||||
优化版:
|
||||
|
||||
```typescript
|
||||
function evalRPN(tokens: string[]): number {
|
||||
const helperStack: number[] = [];
|
||||
const operatorMap: Map<string, (a: number, b: number) => number> = new Map([
|
||||
['+', (a, b) => a + b],
|
||||
['-', (a, b) => a - b],
|
||||
['/', (a, b) => Math.trunc(a / b)],
|
||||
['*', (a, b) => a * b],
|
||||
]);
|
||||
let a: number, b: number;
|
||||
for (let t of tokens) {
|
||||
if (operatorMap.has(t)) {
|
||||
b = helperStack.pop()!;
|
||||
a = helperStack.pop()!;
|
||||
helperStack.push(operatorMap.get(t)!(a, b));
|
||||
} else {
|
||||
helperStack.push(Number(t));
|
||||
}
|
||||
}
|
||||
return helperStack.pop()!;
|
||||
};
|
||||
```
|
||||
|
||||
python3
|
||||
|
||||
```python
|
||||
|
Reference in New Issue
Block a user