美文网首页
Lintcode417 Valid Number solutio

Lintcode417 Valid Number solutio

作者: 程风破浪会有时 | 来源:发表于2018-02-04 22:50 被阅读0次

    【题目描述】

    Validate if a given string is numeric.

    给定一个字符串,验证其是否为数字。

    【题目链接】

    www.lintcode.com/en/problem/valid-number/

    【题目解析】

    这是一道检查字符串输入是否为合法的题目。基本规则是按照科学计数法,所以会出现的特殊字符有以下几个:符号位‘+’,‘-’,小数点‘.’,还有‘e’和‘E’,剩下的就只有数字0-9了,其他字符如果出现就是非法字符,返回false。数字字符在哪里出现都是ok的,我们主要考虑几个特殊字符的情况。

    对于小数点出现的时候,我们要满足一下这些条件:(1)前面不能有小数点或者‘e’和‘E’;(2)前一位是数字(不能是第一位)或者后一位要是数字(不能是最后一位)。

    对于正负号出现的情况,要满足条件:(1)必须是第一位或者在‘e’和‘E’后一位;(2)后一位要是数字。

    对于‘e’和‘E’的情况,要满足:(1)前面不能有‘e’和‘E’出现过;(2)不能是第一位(前面没数字科学计数没有意义)或者最后一位(后面没数字就不用写指数了)。

    根据上面列举的情况,我们用两个标签和做前后位的判断来实现,算法复杂度比较明显是O(n)的,只需要O(1)的额外空间。

    【参考答案】

    www.jiuzhang.com/solutions/valid-number/

    相关文章

      网友评论

          本文标题:Lintcode417 Valid Number solutio

          本文链接:https://www.haomeiwen.com/subject/kjxngxtx.html