[LeetCode]65 有效数字

题目描述

验证给定的字符串是否为数字。

示例:

"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true

代码

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
class Solution:
def isInt(self, s):
if s == '': return False
if s[0] in ['+', '-']:
s = s[1:]
if s == '': return False
for c in s:
if c > '9' or c < '0':
return False
return True

def isFloat(self, s):
if s == '': return False
if s[0] in ['+', '-']:
s = s[1:]
if s == '': return False
if s == '.':
return False
if s.count('.') > 1:
return False
for c in s:
if c == '.' or '0' <= c <= '9':
continue
else:
return False
return True

def isNumber(self, s):
"""
:type s: str
:rtype: bool
"""
s = s.strip()
if len(s) == 0: return False
data = s.split('e')
if len(data) > 2:
return False
elif len(data) == 2:
return self.isFloat(data[0]) and self.isInt(data[1])
else:
return self.isFloat(data[0])