首页 > 其他 > 详细

Valid Number

时间:2014-03-02 05:01:56      阅读:459      评论:0      收藏:0      [点我收藏+]

alidate if a given string is numeric.

Some examples:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true

Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.

 

断断续续做了2小时,各种情况想不到,最后崩溃了……

由于科学计数法的引入,要考虑 ‘.‘ ‘-‘ ‘+‘‘e‘和数字的位置、个数关系。

如果能够了解以上的字符出现时在之前可以出现的字符都有哪些,这个问题就能够顺利解决。

最后贴上水码,以后再重新做一遍。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
class Solution {
public:
    bool isNumber(const char *s) {
        int i  = 0;
        int flag_num = 0;
        //int flag_numa = 0;
        int flag_dot = 0;
        int flag_dota = 0;
        int flag_minus = 0;
        int flag_plus = 0;
        int flag_e = 0;
        int flag_ea = 0;
        int flag_blank = 0;
        int flag_blanka = 0;
        while(s[i]!=‘\0‘)
        {
            if(s[i] == ‘ ‘)
            {
                if(flag_num == 1|| flag_dot ==1 || flag_plus == 1)flag_blank = 1;
                i++;
                continue;
            }
            if(s[i] >= ‘0‘ && s[i] <= ‘9‘)
            {
                flag_num = 1;
                if(flag_e == 1)flag_ea = 1;
                if(flag_dot == 1)flag_dota = 1;
                if(flag_blank == 1)return 0;
                i++;
                continue;
            }
            if(s[i] == ‘.‘)
            {
                if(flag_dot == 1 || flag_blank == 1 ||flag_e == 1 )return 0;
                else
                flag_dot = 1;
                 
                //if(s[i+1] == ‘ ‘)return 0;
                i++;
                continue;
            }
            if(s[i] == ‘-‘)
            {
                if(flag_minus == 1)return 0;
                if(flag_num == 1 && flag_e == 1 );
                else if(flag_num == 1 || flag_dot == 1 )return 0;
                if(flag_minus == 0)flag_minus = 1;
                else
                {
                    if(flag_num == 1)return 1;
                    else flag_num = 1;
                }
                i++;
                continue;
            }
            if(s[i] == ‘+‘)
            {
                if(flag_ea == 1)return 0;
                if(flag_num == 0 && flag_plus == 0|| flag_num == 1&&flag_e == 1)i++;
                else return 0;
                //if(flag_dot == 1 && flag_num == 1)return 0 ;
                if( flag_dot ==1 && flag_e == 0)return 0;
                flag_plus = 1;
                continue;
            }
            if(s[i] >= ‘a‘ && s[i] <= ‘z‘ || s[i] >= ‘A‘ && s[i] <= ‘Z‘)
            if(s[i] == ‘e‘ && flag_e == 0 && flag_num == 1 ) {i++;flag_e=1;}
            else return 0;
             
        }
        //if(s[i-1] == ‘.‘)return 0;
        if(flag_e == 1 && flag_ea == 1)return 1;
        if(flag_e == 1 && flag_ea == 0)return 0;
        if(flag_dot == 1 && flag_dota == 1)return 1;
        //if(flag_dot == 1 )return 0;
         
        if(flag_num == 1)return 1;
        else return 0;
         
    }
};

  

Valid Number,布布扣,bubuko.com

Valid Number

原文:http://www.cnblogs.com/pengyu2003/p/3575023.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!