Skip to content

Commit b630a08

Browse files
committed
feat: add ts solution to lc problem: No.0640
No.0640.Solve the Equation
1 parent 9ea900a commit b630a08

File tree

3 files changed

+175
-0
lines changed

3 files changed

+175
-0
lines changed

solution/0600-0699/0640.Solve the Equation/README.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,66 @@ func solveEquation(equation string) string {
192192
}
193193
```
194194

195+
### **TypeScript**
196+
197+
```ts
198+
function solveEquation(equation: string): string {
199+
const [left, right] = equation.split('=');
200+
const createExpr = (s: string) => {
201+
let x = 0;
202+
let n = 0;
203+
let i = 0;
204+
let sym = 1;
205+
let cur = 0;
206+
let isX = false;
207+
for (const c of s) {
208+
if (c === '+' || c === '-') {
209+
if (isX) {
210+
if (i === 0 && cur === 0) {
211+
cur = 1;
212+
}
213+
x += cur * sym;
214+
} else {
215+
n += cur * sym;
216+
}
217+
isX = false;
218+
cur = 0;
219+
i = 0;
220+
if (c === '+') {
221+
sym = 1;
222+
} else {
223+
sym = -1;
224+
}
225+
} else if (c === 'x') {
226+
isX = true;
227+
} else {
228+
i++;
229+
cur *= 10;
230+
cur += Number(c);
231+
}
232+
}
233+
if (isX) {
234+
if (i === 0 && cur === 0) {
235+
cur = 1;
236+
}
237+
x += cur * sym;
238+
} else {
239+
n += cur * sym;
240+
}
241+
return [x, n];
242+
};
243+
const lExpr = createExpr(left);
244+
const rExpr = createExpr(right);
245+
if (lExpr[0] === rExpr[0]) {
246+
if (lExpr[1] !== rExpr[1]) {
247+
return 'No solution';
248+
}
249+
return 'Infinite solutions';
250+
}
251+
return `x=${(lExpr[1] - rExpr[1]) / (rExpr[0] - lExpr[0])}`;
252+
}
253+
```
254+
195255
### **...**
196256

197257
```

solution/0600-0699/0640.Solve the Equation/README_EN.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,66 @@ func solveEquation(equation string) string {
167167
}
168168
```
169169

170+
### **TypeScript**
171+
172+
```ts
173+
function solveEquation(equation: string): string {
174+
const [left, right] = equation.split('=');
175+
const createExpr = (s: string) => {
176+
let x = 0;
177+
let n = 0;
178+
let i = 0;
179+
let sym = 1;
180+
let cur = 0;
181+
let isX = false;
182+
for (const c of s) {
183+
if (c === '+' || c === '-') {
184+
if (isX) {
185+
if (i === 0 && cur === 0) {
186+
cur = 1;
187+
}
188+
x += cur * sym;
189+
} else {
190+
n += cur * sym;
191+
}
192+
isX = false;
193+
cur = 0;
194+
i = 0;
195+
if (c === '+') {
196+
sym = 1;
197+
} else {
198+
sym = -1;
199+
}
200+
} else if (c === 'x') {
201+
isX = true;
202+
} else {
203+
i++;
204+
cur *= 10;
205+
cur += Number(c);
206+
}
207+
}
208+
if (isX) {
209+
if (i === 0 && cur === 0) {
210+
cur = 1;
211+
}
212+
x += cur * sym;
213+
} else {
214+
n += cur * sym;
215+
}
216+
return [x, n];
217+
};
218+
const lExpr = createExpr(left);
219+
const rExpr = createExpr(right);
220+
if (lExpr[0] === rExpr[0]) {
221+
if (lExpr[1] !== rExpr[1]) {
222+
return 'No solution';
223+
}
224+
return 'Infinite solutions';
225+
}
226+
return `x=${(lExpr[1] - rExpr[1]) / (rExpr[0] - lExpr[0])}`;
227+
}
228+
```
229+
170230
### **...**
171231

172232
```
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
function solveEquation(equation: string): string {
2+
const [left, right] = equation.split('=');
3+
const createExpr = (s: string) => {
4+
let x = 0;
5+
let n = 0;
6+
let i = 0;
7+
let sym = 1;
8+
let cur = 0;
9+
let isX = false;
10+
for (const c of s) {
11+
if (c === '+' || c === '-') {
12+
if (isX) {
13+
if (i === 0 && cur === 0) {
14+
cur = 1;
15+
}
16+
x += cur * sym;
17+
} else {
18+
n += cur * sym;
19+
}
20+
isX = false;
21+
cur = 0;
22+
i = 0;
23+
if (c === '+') {
24+
sym = 1;
25+
} else {
26+
sym = -1;
27+
}
28+
} else if (c === 'x') {
29+
isX = true;
30+
} else {
31+
i++;
32+
cur *= 10;
33+
cur += Number(c);
34+
}
35+
}
36+
if (isX) {
37+
if (i === 0 && cur === 0) {
38+
cur = 1;
39+
}
40+
x += cur * sym;
41+
} else {
42+
n += cur * sym;
43+
}
44+
return [x, n];
45+
};
46+
const lExpr = createExpr(left);
47+
const rExpr = createExpr(right);
48+
if (lExpr[0] === rExpr[0]) {
49+
if (lExpr[1] !== rExpr[1]) {
50+
return 'No solution';
51+
}
52+
return 'Infinite solutions';
53+
}
54+
return `x=${(lExpr[1] - rExpr[1]) / (rExpr[0] - lExpr[0])}`;
55+
}

0 commit comments

Comments
 (0)