样例:java
输入: "0" 输出: true
(模拟,字符串处理)$ O(n)$git
先去除行首和行尾空格;面试
行首若是有一个正负号,直接忽略;markdown
若是字符串为空或只有一个’.’,则不是一个合法数;ide
循环整个字符串,去掉如下几种状况: 微服务
(1) '.'或’e’多于1个; 学习
(2) '.‘在’e’后面出现; code
(3) ‘e’后面或前面为空,或者’e’前面紧跟着’.’; ip
(4) 'e’后面紧跟着正负号,但正负号后面为空;文档
时间复杂度分析:整个字符串只遍历一遍,因此时间复杂度是 O ( n ) O(n) O(n)。
class Solution { public: 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); if (s[0] == '-' || s[0] == '+') s = s.substr(1); //忽略行首正负号 if (s.empty() || s[0] == '.'&& s.size() == 1) return false;//若是字符串为空或只有一个'.',则不是一个合法方案 int dot = 0, e = 0; for (int i = 0; i < s.size(); i ++ ) { if (s[i] >= '0' && s[i] <= '9');//遇到数字不作任何处理 else if (s[i] == '.') { ### 最后 > **针对以上面试题,小编已经把面试题+答案整理好了,想要获取这份面试题+答案的朋友帮忙点赞后,[戳这里免费领取](https://gitee.com/vip204888/java-p7)就能够了**    # 面试专题  **除了以上面试题+答案,小编同时还整理了微服务相关的实战文档也能够分享给你们学习**   ?