[leetcode] Valid Number
来源:互联网 发布:linux定时器重启 编辑:程序博客网 时间:2024/06/06 14:10
Validate if a given string is numeric.
Some examples:"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
分析:此题的确很难,难点在于需要考虑的情况太多,列举如下:
1、空格不能出现在数字之间
2、点和e最多只能出现一次
3、出现e之前必须有数字
4、正负号要么出现在数字的最前面,要么出现在紧接着e后面
5、e后面必须还得有数字
6、正负号最多出现两次
class Solution {public: bool isNumber(const char *s) { int len = (int)strlen(s);int left = 0;int right = len - 1;while(' ' == s[left]) ++left;while(' ' == s[right]) --right;for(int i = 0; i < len; ++i){if('e' == s[i])return isNumber(s, left, i-1) && isInteger(s, i+1, right);}return isNumber(s, left, right); }bool isNumber(const char* s, int start, int end){if(start <= end){int cur = start;bool hasDot = false;bool hasDigit = false;if('+' == s[cur] || '-' == s[cur])++cur;for(int i = cur; i <= end; ++i){char ch = s[i];if(ch >= '0' && ch <= '9'){hasDigit = true;continue;}if('.' == ch && !hasDot)hasDot = true;elsereturn false;}return hasDigit;}return false;}bool isInteger(const char* s, int start, int end){if(start <= end){bool hasDigit = false;if('+' == s[start] || '-' == s[start])++start;for(int i = start; i <= end; ++i)if(s[i] >= '0' && s[i] <= '9')hasDigit = true;elsereturn false;return hasDigit;}return false;}};
0 0
- LeetCode: Valid Number
- LeetCode : Valid Number
- Leetcode: Valid Number
- [Leetcode] Valid Number
- leetcode 50: Valid Number
- [LeetCode] Valid Number
- 【leetcode】Valid Number
- [LeetCode]Valid Number
- [leetcode] Valid Number
- LeetCode | Valid Number
- LeetCode-Valid Number - 有限状态机
- leetcode Valid Number
- Leetcode: Valid Number
- 【leetcode】Valid Number
- Leetcode Valid Number
- LeetCode题解: Valid Number
- LeetCode Valid Number
- [Leetcode] Valid Number (Java)
- Dirichlet's Theorem on Arithmetic Progressions
- Oracle性能优化3-sql优化一定要等价
- 黑马程序员-Java中的Class类
- CentOS 图形界面 命令行界面切换 多种方法
- 一步一步教你做ios推送
- [leetcode] Valid Number
- [cocos2dx笔记009]试用quick-cocos2dx-2.2.4
- Erlang element
- POJ1753
- MFC之菜单
- HDU2896ac自动机版+可以改字典树
- HEVC学习(二) —— HM的整体结构及一些基本概念
- 7/12
- Maximal Product when Cutting Rope