zoukankan      html  css  js  c++  java
  • 53、剑指offer--表示数值的字符串

    题目描述
    请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
     
    解题思路:
    1)先判断第一位是不是符号位,是符号位后移一位
    2)扫描0-9的数字位,后移一位
    3)判断是否遇到‘.’,如果是,跳过小数点,继续扫描0-9  如果遇到‘e’或'E'判断是否符合科学计数法规则
    4)不是小数,遇到‘e’或'E'判断是否符合科学计数法规则
    5)否则,返回false
    判断是否符合科学计数法规则:移到e或E的下一位,判断符号,扫描0-9,如果为‘’则为真,否则为假
     1 class Solution {
     2 public:
     3     void scanDights(char **string)
     4     {
     5         while(**string !='' && **string >= '0' && **string <= '9')
     6             ++(*string);
     7     }
     8     bool isExponential(char **string)
     9     {
    10         if(**string != 'e' && **string != 'E')//注意此处是&&
    11             return false;
    12         ++(*string);
    13         if(**string == '+' || **string == '-')
    14             ++(*string);
    15         if(**string == '')
    16             return false;
    17         scanDights(string);
    18         return (**string == '') ? true: false;
    19     }
    20     bool isNumeric(char* string)
    21     {
    22         if(string == NULL)
    23             return false;
    24         if(*string == '+' || *string == '-')
    25             string++;
    26         if(*string == '')
    27             return false;
    28         bool numeric = true;
    29         scanDights(&string);
    30         if(*string != '')
    31         {
    32             //浮点型处理
    33             if(*string == '.')
    34             {
    35                 ++string;
    36                 scanDights(&string);
    37                 //科学计数法处理
    38                 if(*string == 'e' || *string == 'E')
    39                 {
    40                     numeric = isExponential(&string);
    41                 }
    42             }
    43             //不是浮点型
    44             else if(*string == 'e' || *string == 'E')
    45             {
    46                 numeric = isExponential(&string);
    47             }
    48             else
    49                 numeric = false;
    50         }
    51         return numeric && *string == '';
    52     }
    53 };
  • 相关阅读:
    《C程序设计语言》练习1-10
    《C程序设计语言》练习 1-8,1-9
    被这个C程序折腾死了
    《C程序设计语言》练习 1-6,1-7
    利用圆解一元二次方程
    三角插值的 Fourier 系数推导
    利用离散 Fourier 变换解一元二次方程
    关于selenium IDE找不到元素
    【★】深入BGP原理和思想【第一部】
    【★】深入BGP原理和思想【第一部】
  • 原文地址:https://www.cnblogs.com/qqky/p/7095173.html
Copyright © 2011-2022 走看看