Logic is tricky. Redo it.
1 class Solution { 2 public: 3 bool isNumber(string s) { 4 int start = 0, end = s.size()-1; 5 if (end == -1) return false; 6 while (start <= end && s[start] == ' ') start++; 7 while (end >= start && s[end] == ' ') end--; 8 bool dotflag = false, expflag = false, numflag = false; 9 for (int i = start; i <= end; i++) { 10 if (s[i] >= '0' && s[i] <= '9') { 11 numflag = true; 12 } else if (s[i] == 'e') { 13 if (expflag || !numflag) return false; 14 expflag = true, numflag = false; 15 } else if (s[i] == '.') { 16 if (dotflag || expflag) return false; 17 dotflag = true; 18 } else if (s[i] == '+' || s[i] == '-') { 19 if (i > start && s[i-1] != 'e') return false; 20 } else return false; 21 } 22 return numflag; 23 } 24 };