水题
class Solution {
public:
bool isNumber(string s) {
if (isShijinzhishu(s)) return true;
size_t idx = s.find('e');
if (idx == string::npos) {
idx = s.find('E');
}
if (idx == string::npos || idx == 0) {
return false;
}
return isShijinzhishu(s.substr(0, idx)) && isZhengshu(s.substr(idx + 1));
}
bool isShijinzhishu(const string& s) {
size_t idx = s.find('.');
if (idx == string::npos) {
return isZhengshu(s);
}
if (idx == 0) {
return s[1] >= '0' && s[1] <= '9' && isZhengshu(s.substr(1));
}
if (idx == s.length() - 1) {
return isZhengshu(s.substr(0, s.length() - 1));
}
if (idx == 1) {
if (s[0] == '+' || s[0] == '-') {
return isZhengshu(s.substr(2));
}
}
return isZhengshu(s.substr(0, idx)) && isZhengshu(s.substr(idx + 1));
}
bool isZhengshu(const string& s) {
if (s.empty()) return false;
for (int i = 0; i < s.length(); i++) {
if (s[i] < '0' || s[i] > '9') {
if (i == 0 && (s[i] == '+' || s[i] == '-')) {
if (s.length() == 1)
return false;
continue;
}
return false;
}
}
return true;
}
};