[LeetCode] 65. Valid Number(多个标志位)

【思路】该题题干不是很明确,只能根据用例来理解什么样的字符串才是符合题意的,本题关键在于几个标志位的设立,将字符串分为几个部分,代码如下:

 1 class Solution
 2 {
 3 public:
 4     string trim(string s)
 5     {
 6         int i=0;
 7         while(s[i]==' ') i ++;      //开头处为空格或者Tab,则跳过
 8         s=s.substr(i);
 9         i=s.size()-1;
10         while(s[i]==' ') i --;      //结尾处为空格或者Tab,则跳过
11         s=s.substr(0,i+1);
12         return s;
13     }
14     bool isNumber(string s)
15     {
16         s = trim(s);
17 
18         bool pointSeen = false;
19         bool eSeen = false;
20         bool partOne = false;
21         bool partTwo = false;
22 
23         for(int i = 0; i < s.length(); i ++)
24         {
25             if(s[i] >= '0' && s[i] <= '9')
26             {
27                 if(!eSeen)
28                     partOne = true;
29                 else
30                     partTwo = true;
31             }
32             else if(s[i] == '.')
33             {
34                 if(pointSeen || eSeen)
35                     return false;
36                 pointSeen = true;
37             }
38             else if(s[i] == 'e')
39             {
40                 if(eSeen || !partOne)
41                     return false;
42                 eSeen = true;
43             }
44             else if(s[i] == '+' || s[i] == '-')
45             {
46                 if(i != 0 && s[i - 1] != 'e')
47                     return false;
48             }
49             else    return false;
50         }
51         if(!partOne)
52             return false;
53         else if(eSeen && !partTwo)
54             return false;
55         else
56             return true;
57     }
58 };

 

posted @ 2017-02-17 19:25  Strawberry丶  阅读(260)  评论(0编辑  收藏  举报