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