deno.land / x / masx200_leetcode_test@10.6.5 / basic-calculator / tokenize.ts

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { Tokens } from "./Tokens.ts";
export function tokenize(s: string): Tokens { const tokens: Tokens = []; const stack: Tokens[] = [tokens]; for (let i = 0; i < s.length; i++) { const value = s[i]; if (/\d/.test(value)) { //只处理整数 const digits: string[] = [value];
while (/\d/.test(s[i + 1])) { digits.push(s[i + 1]); i++; }
const num = Number(digits.join("")); stack[stack.length - 1].push(num); } if (["+", "-", "/", "*"].includes(value)) { stack[stack.length - 1].push(value); } if (value === "(") { stack.push([]); } if (value === ")") { if (stack.length <= 0) throw Error("parentheses mismatch"); const last = stack[stack.length - 1]; stack.pop(); stack[stack.length - 1].push(last); } } if (stack.length !== 1) throw Error("parentheses mismatch"); return tokens;}
masx200_leetcode_test

Version Info

Tagged at
a year ago