題目描述:
請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。
例如,字串"+100","5e2","-123","3.1416"和"-1e-16"都表示數值。
但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
實現:
# -*- coding:utf-8 -*-
class solution:
# s字串
def isnumeric(self, s):
# write code here
if len(s) <= 0:
return false
# 分別標記是否出現過正負號、小數點、e,因為這幾個需要特殊考慮
has_sign = false
has_point = false
has_e = false
for i in range(len(s)):
# 對於e的情況
if s[i] == 'e' or s[i] == 'e':
# 不同出現兩個e
if has_e:
return false
# e不能出現在最後面,因為e後面要接數字
else:
has_e = true
if i == len(s) -1:
return false
# 對於符號位的情況
elif s[i] == '+' or s[i] == '-':
# 如果前面已經出現過了符號位,那麼這個符號位,必須是跟在e後面的
if has_sign:
if s[i-1] != 'e' and s[i-1] != 'e':
return false
# 如果這是第一次出現符號位,而且出現的位置不是字串第乙個位置,那麼就只能出現在e後面
else:
has_sign = true
if i > 0 and s[i-1] != 'e' and s[i-1] != 'e':
return false
# 對於小數點的情況
elif s[i] == '.':
# 小數點不能出現兩次;而且如果已經出現過e了,那麼就不能再出現小數點,因為e後面只能是整數
if has_point or has_e:
return false
# 如果是第一次出現小數點,如果前面出現過e,那麼還是不能出現小數點
else:
has_point = true
if i > 0 and (s[i-1] == 'e' or s[i-1] == 'e'):
return false
else:
# 其他字元必須是『0』到『9』之間的
if s[i] < '0' or s[i] > '9':
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...