zoukankan      html  css  js  c++  java
  • 表示数值的字符串

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M

    题目描述

    请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

    思路:

    设立三个flag:sign,decimal,hasE,分别来标记符号位、小数点、e是否出现
    本题涉及到的条件很多,比如第一次出现+-号,且不是在字符串开头,后面要紧跟e,不然,就不符合要求;所以一定要确定+-、.、e三者在本题中何种情况是符合条件的

    class Solution {
    public:
        bool isNumeric(char* string)
        {
            //标记符号 小数点 e是否出现
            bool sign = false,decimal = false,hasE = false;
            for(int i =0;i < strlen(string);i++)
            {
                if(string[i] == 'e' || string[i] == 'E')
                {
                    if(i == strlen(string)-1) return false;
                    if(hasE) return false;
                    hasE = true;
                }
                else if(string[i] == '+' || string[i] == '-')
                {
                    //第二次出现+-符号,则必须要紧贴e之后
                    if(sign && string[i-1] != 'e' && string[i-1] != 'E')return false;
                    //第一次出现+-符号,且不是在字符串开头,则也必须紧贴e之后
                    if(!sign && i > 0 && string[i-1]!='e' && string[i-1] != 'E') return false;
                    sign = true;
                }
                else if(string[i] == '.')
                {
                    //e后面不能直接接小数点,小数点不能出现两次
                    if(hasE || decimal) return false;
                    decimal = true;
                }
                else if(string[i]<'0' || string[i]>'9')
                    return false;
            }
            return true;
        }
    
    };
    
  • 相关阅读:
    8 Django 模型层(1)
    7 Django的模板层
    Java ClassLoader
    Spring的注入注解
    Java 面试Spring的加载机制
    Spring容器启动初始化bean的方法
    java 线程
    经典博客
    Spring注解@Component、@Repository、@Service、@Controller区别
    java 实现多个文件的Zip包的生成
  • 原文地址:https://www.cnblogs.com/whiteBear/p/12656727.html
Copyright © 2011-2022 走看看