2021-02-15

该博客讨论了LeetCode第65题,即验证输入字符串是否为有效的数字。有效数字由整数、小数或科学计数法组成,并遵循特定的规则。代码实现了一个Python函数,检查字符串是否符合这些规则,如正确处理'e'、小数点、正负号等。函数通过了所有测试用例,具有良好的时间和空间效率。
摘要由CSDN通过智能技术生成

Leetcode 65

A valid number can be split up into these components (in order):

A decimal number or an integer.
(Optional) An ‘e’ or ‘E’, followed by an integer.
A decimal number can be split up into these components (in order):

(Optional) A sign character (either ‘+’ or ‘-’).
One of the following formats:
At least one digit, followed by a dot ‘.’.
At least one digit, followed by a dot ‘.’, followed by at least one digit.
A dot ‘.’, followed by at least one digit.
An integer can be split up into these components (in order):

(Optional) A sign character (either ‘+’ or ‘-’).
At least one digit.
For example, all the following are valid numbers: [“2”, “0089”, “-0.1”, “+3.14”, “4.”, “-.9”, “2e10”, “-90E3”, “3e+7”, “+6e-1”, “53.5e93”, “-123.456e789”], while the following are not valid numbers: [“abc”, “1a”, “1e”, “e3”, “99e2.5”, “–6”, “-+3”, “95a54e53”].

Given a string s, return true if s is a valid number.
主要是e 比较麻烦,后面要有数字 或者 ± 和数字

class Solution:
    def isNumber(self, s: str) -> bool:
        e_seen, dot_seen, num_seen = False, False, False
        
        s = s.strip()
        
        for i, a in enumerate(s):
            
            if a in 'Ee':
                if e_seen or not num_seen:
                    return False                
                num_seen = False
                e_seen= True
            
            elif a.isdigit():
                num_seen = True

            elif a == '.':
                if e_seen or dot_seen:
                    return False     
                dot_seen = True
                           
            elif a in "+-":
                if i > 0 and s[i-1] !="e":
                    return False
            
            else:
                return False
            
        return num_seen and len(s)>0

Success
Details
Runtime: 32 ms, faster than 82.25% of Python3 online submissions for Valid Number.
Memory Usage: 14.1 MB, less than 96.08% of Python3 online submissions for Valid Number.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值