题解 | #表示数值的字符串#

表示数值的字符串

http://www.nowcoder.com/practice/e69148f8528c4039ad89bb2546fd4ff8

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param str string字符串 
# @return bool布尔型
#
class Solution:
    def isNumeric(self , str: str) -> bool:
        # write code here
        str=str.replace(' ', '')
        if not str:
            return False
        if str[0]=='+' or str[0]=='-':
            str=str[1:]
        str=str.replace('E', 'e')
        inx=str.find('e')
        //从e开始分成两部分
        if inx>=0:
            firstPart=str[:inx]
            secondPart=str[inx+1:]
            if len(secondPart)>0:
                if secondPart[0]=='+' or secondPart[0]=='-':
                    secondPart=secondPart[1:]
                    //左半部分可以有小数,所以看看是不是合法数字,右半部分只能是纯数字
                return self.isValidNumber(firstPart) and self.isPureNumber(secondPart)
        // 没有e就看看是不是合法数字
        return self.isValidNumber(str)
    
    //判断是不是一个合法数字
    def isValidNumber(self,str):
        inx=str.find('.') //不能用index方法,index没找到会报一个错误
        //有小数点分左右两部分,看看左右两部分是不是纯数字
        if inx>=0:
            firstPart=str[:inx]
            secondPart=str[inx+1:]
            if len(firstPart)>0 and len(secondPart)>0:
                return self.isPureNumber(firstPart) and self.isPureNumber(secondPart)
            elif len(secondPart) >0:
                return self.isPureNumber(secondPart)
            else:
                return self.isPureNumber(firstPart)
        //没有小数点就看看是不是纯数字
        return self.isPureNumber(str)
    
    //判断是不是纯数字
    def isPureNumber(self,str):
        if not str:
            return False
        for i in str:
            if i<'0' or i>'9':
                return False
        return True
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务