python版本解
表示数值的字符串
http://www.nowcoder.com/questionTerminal/e69148f8528c4039ad89bb2546fd4ff8
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param str string字符串 # @return bool布尔型 #方法一:排除法 class Solution: def isNumeric(self , str ): # write code here point=False e=False leop=False reop=False lens=len(str) eindex=lens if 'e' in str : eindex=str.index('e') if 'E' in str: eindex=str.index('E') if lens==1: if str[0]<'0' or str[0]>'9': return False for i in range(lens): if str[i]=='.': if point or i>eindex: return False point=True elif str[i]=='e' or str[i]=='E': if e or i==0 or i==lens-1: return False e=True eindex=i elif str[i]=='+' or str[i]=='-': if i<eindex: if str[i]==str[:eindex]: return False if leop or i!=0: return False leop=True else: if str[i]==str[eindex+1:]: return False if reop or i!=eindex+1: return False reop=True elif str[i]>='0'and str[i]<='9': continue else: return False return True
方法二:穷举法
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param str string字符串 # @return bool布尔型 # class Solution: def isNumeric(self , str ): # write code here res=[ {'s':1, 'd':2, '.':3}, ##0 开头可放置的字符 {'.':3, 'd':2 }, ##1 符号开头,后面可放置的字符 {'d':2, '.':4,'e':5}, ##2 数字后面可放置的字符 {'d':4}, ##3 点开头后面可放置的字符 {'d':4,'e':5}, ##4 数字+点号,后面可以放置的字符 {'s':6,'d':7}, ##5 e后面可放置的字符 {'d':7}, ##6 e+符号,不能以符号结尾,后面可以放置的字符 {'d':7} ##7 以数字结尾 ] p=0 for i in str: if i=='+' or i=='-': t= 's' elif i in 'eE': t='e' elif i=='.': t='.' elif i>='0' and i<='9': t='d' else: t='?' if t not in res[p]: return False p=res[p][t] return p in [2,4,7]