模拟 表示数值的字符串
作者:
xianhai
,
2021-11-17 09:19:04
,
所有人可见
,
阅读 206
模拟 表示数值的字符串
题目
class Solution {
public:
bool isDigit(string &s, int i){
return s[i] >= '0' && s[i] <= '9';
}
bool isNumber(string s) {
// 先去掉行首、行尾的空格
int i = 0;
while (i < s.size() && s[i] == ' ') {
i++;
}
int j = s.size() - 1;
while (j >= 0 && s[j] == ' ') {
j--;
}
if (i > j) {
return false;
}
s = s.substr(i, j - i + 1);
// 123.45e+6
s += '\0';
bool isNum = false;
i = 0;
if (s[i] == '+' || s[i] == '-') {
i++;
}
while (isDigit(s, i)) {
isNum = true;
i++;
}
if (s[i] == '.') {
i++;
}
while (isDigit(s, i)) {
isNum = true;
i++;
}
// 判断含e的情况
if (isNum && (s[i] == 'e' || s[i] == 'E')) {
i++;
isNum = false;
if (s[i] == '+' || s[i] == '-') {
i++;
}
while (isDigit(s, i)) {
isNum = true;
i++;
}
}
return (s[i] == '\0' && isNum);
}
};
参考
1.神奇的指针移动解法
2.模拟,字符串处理