Valid Number

Validate 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.

C++:
01 bool isNumber(const char *s) {
02        bool nflag=false;
03        bool dflag=false;
04        bool eflag=false;
05        bool sflag=false;
06        bool iflag=false;
07        bool mstend=false;
08        bool afte=false;
09        bool aftd=false;
10        for(int i=0;s[i]!=;i++){
11            if(s[i]==‘ ‘){
12                if(iflag==true)
13                    mstend=true;
14                continue;
15            }
16            if((s[i]==‘+’)||(s[i]==‘-‘)){
17                if(mstend==true)
18                    return false;
19                if(sflag==true)
20                    return false;
21                if((nflag==true)&&(afte==false))
22                    return false;
23                if(aftd==true)
24                    return false;
25                else{
26                    iflag=true;
27                    sflag=true;
28                    continue;
29                }
30            }
31            if(s[i]==‘.’){
32                if(mstend==true)
33                    return false;
34                if(dflag==true)
35                    return false;
36                if((afte==true)||(aftd==true))
37                    return false;
38                if(eflag==true)
39                    return false;
40                else{
41                    iflag=true;
42                    dflag=true;
43                    aftd=true;
44                    continue;
45                }
46            }
47            if(s[i]==‘e’){
48                if(mstend==true)
49                    return false;
50                aftd=false;
51                if((eflag==true)||(nflag==false))
52                    return false;
53                else{
54                    eflag=true;
55                    sflag=false;
56                    afte=true;
57                    continue;
58                }
59            }
60            if((s[i]>=‘0’)&&(s[i]<=‘9’)){
61                if(mstend==true)
62                    return false;
63                afte=false;
64                aftd=false;
65                iflag=true;
66                nflag=true;
67                continue;
68            }
69 
70            return false;
71        }
72        if((nflag==true)&&(afte==false))
73            return true;
74        else
75            return false;
76 }
Advertisements
This entry was posted in String. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s