題目:
請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100",「5e2」,"-123",「3.1416"和」-1e-16"都表示數值。 但是"12e",「1a3.14」,「1.2.3」,"±5"和"12e+4.3"都不是。
思路一:
窮舉**:
class
solution
:# s字串
defisnumeric
(self, s):if
not s:
return
false
if'e'
in s:
if s.count(
'e')
>1:
return
false
else
: i = s.index(
'e')
if i ==
len(s)-1
:return
false
return self.helper1(s[
:i])
and self.helper2(s[i+1:
])if'e'
in s:
if s.count(
'e')
>1:
return
false
else
: i = s.index(
'e')
if i ==
len(s)-1
:return
false
return self.helper1(s[
:i])
and self.helper2(s[i+1:
])return self.helper1(s)
defhelper1
(self, s)
: arr =
['0'
,'1'
,'2'
,'3'
,'4'
,'5'
,'6'
,'7'
,'8'
,'9'
,'.'
]if s.count(
'.')
>1:
return
false
for i in s[1:
]:if i not
in arr:
return
false
if s[0]
!='+'
and s[0]
!='-'
and s[0]
notin arr:
return
false
else
:return
true
defhelper2
(self, s)
: arr =
['0'
,'1'
,'2'
,'3'
,'4'
,'5'
,'6'
,'7'
,'8'
,'9'
]for i in s[1:
]:if i not
in arr:
return
false
if s[0]
!='+'
and s[0]
!='-'
and s[0]
notin arr:
return
false
else
:return
true
思路二:
巧妙**:
class
solution
:# s字串
defisnumeric
(self, s)
: arr =
['0'
,'1'
,'2'
,'3'
,'4'
,'5'
,'6'
,'7'
,'8'
,'9'
] e, decimal =0,
0for i in
range
(len
(s))
:if s[i]
in arr:
continue
elif s[i]
=='+'
or s[i]
=='-'
:if i !=
0and s[i-1]
!='e'
and s[i-1]
!='e'
:return
false
elif s[i]
=='e'
or s[i]
=='e'
:if i ==
0or i ==
len(s)-1
or e:
return
false
e =1elif s[i]
=='.'
:if decimal or i ==
len(s)-1
or s[i+1]
=='e'
or s[i+1]
=='e'
or e:
return
false
decimal =
1else
:return
false
return
true
字串 表示數值的字串
題目描述 實現乙個函式用來判斷字串是否表示數值 包括整數和小數以及使用科學計數法表示的數 分析 表示數值的字串的規則有 第乙個字元只能是 以及數字 數字字元後面只能接 或 e e 小數點後面必須要有字元且只能接數字字元或 e e e e 後面必須要接字元且只能接數字字元或者 後面必須要接數字字元 b...
表示數值的字串(字串)
題目描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。思路 1.第乙個數為 或者為 時,跳過。2.對於小數點 小數點只能出現一次 小數點不...
字串 表示數值的字串
此題出自牛客網的劍指offer專題 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。思路一 直接正規表示式擼起 實現 如下 public cl...