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

来源:互联网 发布:下载app客户端软件 编辑:程序博客网 时间:2024/06/17 13:15

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

 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                 else30                     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         else56             return true;57     }58 };

 

原创粉丝点击