FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
leetcode-algorithms/src/BasicCalculator.java at master · anishLearnsToCode/leetcode-algorithms · GitHub
anishLearnsToCode
/
leetcode-algorithms
Public
Notifications
You must be signed in to change notification settings
Fork
17
Star
98
Code
Issues
0
Pull requests
0
Discussions
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
leetcode-algorithms
/
src
/
BasicCalculator.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
38 lines (33 loc) · 1.1 KB
Breadcrumbs
leetcode-algorithms
/
src
/
BasicCalculator.java
Copy path
File metadata and controls
38 lines (33 loc) · 1.1 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
37
38
import
java
.
util
.
Stack
;
class
BasicCalculator
{
public
int
calculate
(
String
s
) {
final
Stack
<
Integer
>
stack
=
new
Stack
<
Integer
>();
int
number
=
0
;
int
result
=
0
;
// For the ongoing result
int
sign
=
1
;
// 1 means positive, -1 means negative
for
(
int
i
=
0
;
i
<
s
.
length
();
i
++) {
final
char
ch
=
s
.
charAt
(
i
);
if
(
Character
.
isDigit
(
ch
)) {
number
=
10
*
number
+ (
ch
-
'0'
);
}
else
if
(
isOperator
(
ch
)) {
result
+=
sign
*
number
;
number
=
0
;
sign
=
ch
==
'+'
?
1
: -
1
;
}
else
if
(
ch
==
'('
) {
stack
.
push
(
result
);
stack
.
push
(
sign
);
sign
=
1
;
result
=
0
;
}
else
if
(
ch
==
')'
) {
result
+=
sign
*
number
;
result
*=
stack
.
pop
();
result
+=
stack
.
pop
();
number
=
0
;
}
}
return
result
+ (
sign
*
number
);
}
private
static
boolean
isOperator
(
char
c
) {
return
c
==
'+'
||
c
==
'-'
;
}
}
Back
|
FazBrowse Home
|
New Git URL