65. Valid Number
很无聊的一道题目歧义也很多
判断一个字符串是否能够用十进制数表示,下面是一堆范例
"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
" -90e3 "
=> true
" 1e"
=> false
"e3"
=> false
" 6e-1"
=> true
" 99e2.5 "
=> false
"53.5e93"
=> true
" --6 "
=> false
"-+3"
=> false
"95a54e53"
=> false
总结一下规则,一个数字分为底数部分和指数部分
底数部分的开头符号位没有或者为1位,数字部分纯数字或者带小数点,有整数部分(整数部分不为空)小数点后可以无数字,没有整数部分小数点后必须有数字
e之后只能为整数
想到的方法有字符串检查,分别用标识符代表小数点和e的个数,然后进行字符串的检查;正则表达;
下面是我的正则写法
class Solution: def isNumber(self, s): """ :type s: str :rtype: bool """ if re.match(r'\s*(\+|-)?((\d+\.?\d*)|(\.\d+))(e(\+|-)?(\d)+)?\s*$', s): return True return False
还看见一种写法,虽然是对的但是还是不要这样做:
class Solution(object): def isNumber(self, s): try: float(s) except ValueError: return False return True