题目地址:
https://leetcode.com/problems/valid-number/
给定一个长 n n n字符串,判断其是否能转为浮点数。
代码如下:
class Solution {
public:
bool isNumber(const string& s) {
int i = 0;
for (; s[i] == ' '; i++) ;
if (s[i] == '+' || s[i] == '-') i++;
int n_nm, n_pt;
for (n_nm = 0, n_pt = 0; (s[i] <= '9' && s[i] >= '0') || s[i] == '.'; i++)
s[i] == '.' ? n_pt++ : n_nm++;
if (n_pt > 1 || n_nm < 1) return false;
if (s[i] == 'e' || s[i] == 'E') {
i++;
if (s[i] == '+' || s[i] == '-') i++;
int n_nm = 0;
for (; s[i] >= '0' && s[i] <= '9'; i++, n_nm++) ;
if (n_nm < 1) return false;
}
for (; s[i] == ' '; i++) ;
return s[i] == 0;
}
};
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。