• 面试题54——表示数值的字符串


    题目描写叙述

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


    解题思路:

    这道题没什么别的技巧,依照数值的表示规则,逐个扫描字符串,看是否符合要求。


    数值有例如以下几种情况:

    1、正负数,首位能够有‘+’ 和 ‘-’ 符号;

    2、小数

    3、科学计数法,符号‘e’ 或 ‘E’ 。注意  e 或 E 之后仅仅能是整数(能够有正负数)

    实现细节见代码


    实现代码:

    <span style="font-size:18px;">
    class Solution {
    public:
        bool isNumeric(char* string)
        {
            if(string == nullptr)
                return false;
            
            if(*string == '+' || *string == '-')
                string++;
            if(*string == '')
                return false;
            
            bool isNum = true;
            
            scanDigits(&string);
            
            if(*string != '')
            {
            	if(*string == '.')
                {
                	++string;
                    scanDigits(&string);
                    if(*string == 'e' || *string == 'E')
                        isNum = isExp(&string);
                }
                else if(*string == 'e' || *string == 'E')
                    isNum = isExp(&string);
                else
                    isNum = false;
            }
            
            return isNum && (*string == '');
            
        }
        
        
        void scanDigits(char **str)
        {
        	while(**str != '' && **str >= '0' && **str <= '9')
                ++(*str);
        }
        
        bool isExp(char **str)
        {
        	if(**str != 'e' && **str != 'E')
                return false;
            
            ++(*str);
            
            if(**str == '+' || **str == '-')
                ++(*str);
            
            if(**str == '')
                return false;
            
            scanDigits(str);
            
            return (**str == '') ?

    true : false; } }; </span>



  • 相关阅读:
    loadrunder之脚本篇——action分类
    性能测试工具下载
    Loadrunder常见问题汇总(持续更新)
    python编程总结
    使用 rsync 同步
    mysql查询今天、昨天、7天、近30天、本月、上一月 数据
    vim配置
    shell 分割字符串存至数组
    变换莫测
    2014 10
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6973267.html
Copyright © 2020-2023  润新知