• [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

  • 相关阅读:
    POJ2524+并查集
    POJ3697+BFS+hash存边
    POJ1151+线段树+扫描线
    POJ2528+线段树
    ubuntu 和 win7 远程登陆 + vnc登陆
    POJ3690+位运算
    POJ3283+字典树
    POJ3282+模拟
    POJ2349+prim
    2016.6.13
  • 原文地址:https://www.cnblogs.com/chruny/p/5028726.html
Copyright © 2020-2023  润新知