[LeetCode]题解(python):065-Valid Number

题目来源:

  https://leetcode.com/problems/valid-number/


 

题意分析:

  输入一个字符串,判断这个字符串表示的是不是一个有效的数字。比如:

  "0" => true
  " 0.1 " => true
  "abc" => false
  "1 a" => false
  "2e10" => true


 

题目思路:

  由于空格在两端不影响,所以首先将两端的空格去掉。判断开始是否数字,如果不是直接返回False,然后判断是否遇到'.'和‘e',然后判断'e'以后是否有’+‘,’-‘和’.'。


 

代码(Python):

  

 1 class Solution(object):
 2     def isNumber(self, s):
 3         """
 4         :type s: str
 5         :rtype: bool
 6         """
 7         begin,last =0,len(s) - 1
 8         while begin <= last and s[begin] == ' ': begin += 1
 9         while begin <= last and s[last] == ' ': last -= 1
10         if begin < last and (s[begin] == '+' or s[begin] == '-'): begin += 1
11         num,dot,exp = False,False,False
12         while begin <= last:
13             if s[begin] >= '0' and s[begin] <= '9':
14                 num = True
15             elif s[begin] == '.':
16                 if dot or exp:
17                     return False
18                 dot = True
19             elif s[begin] == 'e' or s[begin] =='E':
20                 if exp or not num:
21                     return False
22                 exp,num = True,False
23             elif s[begin] =='+' or s[begin] == '-':
24                 if begin == 0 or s[begin - 1] != 'e':
25                     return False
26             else:
27                 return False
28             begin += 1
29         return num
30         
View Code

 


 

转载请注明出处:http://www.cnblogs.com/chruny/p/5028726.html

转载于:https://www.cnblogs.com/chruny/p/5028726.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值