标签:not 剑指offer 部分 题目 注意 一个 turn 退出 for
题目描述class Solution:
def isNumeric(self, s):
"""
表示数值的字符串遵循模式: A[.[B]][e|EC]或者.B[e|EC]
其中A为整数部分,B为紧跟着小数点的小数部分,C为指数部分
其中A和C都可能含有符号,B不能含有符号
A不是必须的,如果没有A那么B不能为空
:param s: 待判断的字符串
:return: True / False
"""
if not s:
return False
# 查找属于A的部分,只有在遇到非数字的部分才退出循环
if s[0] in ‘+-‘:
s = s[1:]
isBreak = False
for i in range(len(s)):
if ‘0‘ <= s[i] <= ‘9‘:
continue
isBreak = True
break
if not isBreak:
return True
s = s[i:]
# 如果遇到了非数字部分,说明A部分已经查找完成。
# 查找B部分
if s and s[0] == ‘.‘:
s = s[1:]
isBreak = False
for i in range(len(s)):
if ‘0‘ <= s[i] <= ‘9‘:
continue
isBreak = True
break
if not isBreak:
return True
s = s[i:]
# 查找C部分
if s and s[0] in ‘eE‘:
s = s[1:]
# 注意C部分必须要有数字,不能只有一个e
if not s:
return False
if s[0] in ‘+-‘:
s = s[1:]
isBreak = False
for i in range(len(s)):
if ‘0‘ <= s[i] <= ‘9‘:
continue
isBreak = True
break
if not isBreak:
return True
return False
标签:not 剑指offer 部分 题目 注意 一个 turn 退出 for
原文地址:https://blog.51cto.com/jayce1111/2383367