LeetCode --- 65. Valid Number
来源:互联网 发布:如何更改淘宝店铺名 编辑:程序博客网 时间:2024/05/21 01:28
题目链接:Valid Number
Validate if a given string is numeric.
Some examples:
"0" => true " 0.1 " => true "abc" => false "1 a" => false "2e10" => true
Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.
这道题的要求是判断1个字符串是否是数字。
字符串处理,不过有几个细节需要注意:
- 数字可以有前导空格和后置空格,不过数字中间不允许有空格;
- 对于'.',最多只允许出现1次,其前面可以没有数字,但后面一定要有数字;
- 对于'e',最多只允许出现1次,其前后都必须有数字,但后面一定是整数,即不能出现'.';
- 对于'+'和'-','e'的前后都最多只允许出现1次,且一定要在数字最前面出现;
- 至于其他字符,只允许是数字(0~9)。
下面有几个例子:
"e" => false"." => false" " => false".1" => true"0e" => false"e9" => false"7e+6" => true"6+1" => false
时间复杂度:O(n)
空间复杂度:O(1)
1 class Solution 2 { 3 public: 4 bool isNumber(string s) 5 { 6 int i = 0; 7 // 跳过前导空格 8 for( ; i < s.size() && ' ' == s[i]; ++ i); 9 // 处理正负号10 if('+' == s[i] || '-' == s[i])11 ++ i;12 // 处理后面数字部分13 bool digit = false, dot = false, exp = false;14 for( ; i < s.size(); ++ i)15 {16 if('.' == s[i] && !dot) // '.'不能出现2次,'.'前面可以没有数字17 dot = true;18 else if('e' == s[i] && !exp && digit) // 'e'不能出现2次,'e'前面必须有数字19 {20 // 'e'后面不能出现'.','e'后面必须是整数(可以是正的或负的)21 dot = exp = true;22 if(i + 1 < s.size() && ('+' == s[i + 1] || '-' == s[i + 1]))23 ++ i;24 if(i + 1 >= s.size() || !(s[i + 1] >= '0' && s[i + 1] <= '9'))25 return false;26 }27 else if(s[i] >= '0' && s[i] <= '9')28 digit = true;29 else30 break;31 }32 33 // 跳过后面空格34 for( ; i < s.size() && ' ' == s[i]; ++ i);35 36 return digit && i == s.size();37 }38 };
转载请说明出处:LeetCode --- 65. Valid Number
0 0
- LeetCode --- 65. Valid Number
- [Leetcode] 65. Valid Number
- [LeetCode]65.Valid Number
- Leetcode-65.Valid Number
- 【leetcode】65.Valid Number
- leetcode 65. Valid Number
- LeetCode 65. Valid Number
- Leetcode 65. Valid Number
- LeetCode 65. Valid Number
- LeetCode - 65. Valid Number
- [LeetCode] 65. Valid Number
- leetcode 65.Valid Number
- leetcode 65. Valid Number
- leetcode 65.Valid Number
- Leetcode--65. Valid Number
- leetcode-65. Valid Number
- Leetcode 65. Valid Number
- 【LeetCode】65. Valid Number
- 百度员工离职总结:如何做个好员工
- c语言FILE结构和字符串读取
- 数据库第一次作业
- LeetCode --- 64. Minimum Path Sum
- PE 13 Large sum
- LeetCode --- 65. Valid Number
- Qt Quick + OpenGL + Bullet初次测试
- dede 文件夹 数据库表 字段 记录
- 【周末】虽是周末,也不能懈怠啊!
- 排序-冒泡排序
- web2py的“hello world”
- easyui中layout、accordion加tabs实现简单菜单布局实例
- 数据挖掘和机器学习的区别和联系
- 1031 质数环(深搜练习)