剑指offer 表示数值的字符串
class Solution {
public:
bool isNumeric(char* str) {
// 标记符号、小数点、e是否出现过
bool sign = false, decimal = false, hasE = false;
for (int i = 0; i < strlen(str); i++) {
if (str[i] == e || str[i] == E) {
if (i == strlen(str)-1) return false; // e后面一定要接数字
if (hasE) return false; // 不能同时存在两个e
hasE = true;
} else if (str[i] == + || str[i] == -) {
// 第二次出现+-符号,则必须紧接在e之后
if (sign && str[i-1] != e && str[i-1] != E) return false;
if (!sign && i > 0 && str[i-1] != e && str[i-1] != E) return false;
sign = true;
} else if (str[i] == .) {
if (hasE || decimal) return false;
decimal = true;
} else if (str[i] < 0 || str[i] > 9) // 不合法字符
return false;
}
return true;
}
};
class Solution {
public:
bool isNumeric(char* str) {
// 标记符号、小数点、e是否出现过
bool sign = false, decimal = false, hasE = false;
for (int i = 0; i < strlen(str); i++) {
if (str[i] == e || str[i] == E) {
if (i == strlen(str)-1) return false; // e后面一定要接数字
if (hasE) return false; // 不能同时存在两个e
hasE = true;
} else if (str[i] == + || str[i] == -) {
// 第二次出现+-符号,则必须紧接在e之后
if (sign && str[i-1] != e && str[i-1] != E) return false;
if (!sign && i > 0 && str[i-1] != e && str[i-1] != E) return false;
sign = true;
} else if (str[i] == .) {
if (hasE || decimal) return false;
decimal = true;
} else if (str[i] < 0 || str[i] > 9) // 不合法字符
return false;
}
return true;
}
};
2020-05-03
在牛客打卡24天,今天学习:刷题 1 道/代码提交 1 次
全部评论
相关推荐
05-28 19:42
门头沟学院 Java 点赞 评论 收藏
分享

点赞 评论 收藏
分享

点赞 评论 收藏
分享