1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| int start = 0; bool get_exp(string s, int & i, int len) { i++; if (i == len)return false; if (s[i] == '-' || s[i] == '+') { i++; if (s[i] >= '0'&&s[i] <= '9') { while (i < len&&s[i] >= '0'&&s[i] <= '9') { i++; } if (i == len)return true; } } else if (i < len&&s[i] >= '0'&&s[i] <= '9') { while (i < len&&s[i] >= '0'&&s[i] <= '9') { i++; } if (i == len)return true; } return false; } bool get_frac(string s, int & i, int len) { i++; if (i == len && i - 1 == start)return false; while (i<len&&s[i] >= '0'&&s[i] <= '9') { i++; } if (i == len)return true; else if (s[i] == 'e') { if (i - 1 == start) return false; else return get_exp(s, i, len); } return false; } bool isNumber(string s) { int len = s.length(); if (!len)return false; int i = 0; while (s[i] == ' ') { i++; } start = i; while (s[len - 1] == ' ')len--; if (i < len) { if (s[i] == '-' || s[i] == '+') { i++; if (i == len)return false; if (s[i] >= '0'&&s[i] <= '9') { while (i < len&&s[i] >= '0'&&s[i] <= '9') { i++; } if (i == len)return true; else if (s[i] == '.') { return get_frac(s, i, len); } else if (s[i] == 'e') { return get_exp(s, i, len); } } else if (s[i] == '.') { return get_frac(s, i, len); } } else if (s[i] >= '0'&&s[i] <= '9') { while (i < len&&s[i] >= '0'&&s[i] <= '9') { i++; } if (i == len)return true; else if (s[i] == '.') { return get_frac(s, i, len); } else if (s[i] == 'e') { return get_exp(s, i, len); } } else if (s[i] == '.') { return get_frac(s, i, len); } } return false; }
|