FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
LeetCode-Solutions/Python/valid-number.py at master · pythonpeixun/LeetCode-Solutions · GitHub
pythonpeixun
/
LeetCode-Solutions
Public
forked from
kamyu104/LeetCode-Solutions
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
LeetCode-Solutions
/
Python
/
valid-number.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
62 lines (51 loc) · 2.04 KB
Breadcrumbs
LeetCode-Solutions
/
Python
/
valid-number.py
Copy path
File metadata and controls
62 lines (51 loc) · 2.04 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# Time: O(n)
# Space: O(1)
class
InputType
(
object
):
INVALID
=
0
SPACE
=
1
SIGN
=
2
DIGIT
=
3
DOT
=
4
EXPONENT
=
5
# regular expression: "^\s*[\+-]?((\d+(\.\d*)?)|\.\d+)([eE][\+-]?\d+)?\s*$"
# automata: http://images.cnitblog.com/i/627993/201405/012016243309923.png
class
Solution
(
object
):
def
isNumber
(
self
,
s
):
"""
:type s: str
:rtype: bool
"""
transition_table
=
[[
-
1
,
0
,
3
,
1
,
2
,
-
1
],
# next states for state 0
[
-
1
,
8
,
-
1
,
1
,
4
,
5
],
# next states for state 1
[
-
1
,
-
1
,
-
1
,
4
,
-
1
,
-
1
],
# next states for state 2
[
-
1
,
-
1
,
-
1
,
1
,
2
,
-
1
],
# next states for state 3
[
-
1
,
8
,
-
1
,
4
,
-
1
,
5
],
# next states for state 4
[
-
1
,
-
1
,
6
,
7
,
-
1
,
-
1
],
# next states for state 5
[
-
1
,
-
1
,
-
1
,
7
,
-
1
,
-
1
],
# next states for state 6
[
-
1
,
8
,
-
1
,
7
,
-
1
,
-
1
],
# next states for state 7
[
-
1
,
8
,
-
1
,
-
1
,
-
1
,
-
1
]]
# next states for state 8
state
=
0
for
char
in
s
:
inputType
=
InputType
.
INVALID
if
char
.
isspace
():
inputType
=
InputType
.
SPACE
elif
char
==
'+'
or
char
==
'-'
:
inputType
=
InputType
.
SIGN
elif
char
.
isdigit
():
inputType
=
InputType
.
DIGIT
elif
char
==
'.'
:
inputType
=
InputType
.
DOT
elif
char
==
'e'
or
char
==
'E'
:
inputType
=
InputType
.
EXPONENT
state
=
transition_table
[
state
][
inputType
]
if
state
==
-
1
:
return
False
return
state
==
1
or
state
==
4
or
state
==
7
or
state
==
8
class
Solution2
(
object
):
def
isNumber
(
self
,
s
):
"""
:type s: str
:rtype: bool
"""
import
re
return
bool
(
re
.
match
(
"^\s*[\+-]?((\d+(\.\d*)?)|\.\d+)([eE][\+-]?\d+)?\s*$"
,
s
))
Back
|
FazBrowse Home
|
New Git URL