Valid Number(leetcode)
2014-11-29 11:45
127 查看
题目:
Validate if a given string is numeric.
Some examples:
Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.
题目来源:https://oj.leetcode.com/problems/valid-number/
解题思路:细节题,要把所有的例外的情况排除
参考:/article/4999853.html
注意事项:
1. 前后空格
2."+","-"号
3. "e"和"E"的出现位置
4."."小数点的出现位置
5. "1.",".34","+.1"也被认为是正确的
6."012"认为是正确的,即前导0没关系
《leetcode题解》中的解法仍然没有看懂,是用有限状态自动机来做的,但是看起来更简练,有时间了这个代码还是很值得研究一下的,有利于以后解这种问题,有限状态机是个很有用的工具。
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.
题目来源:https://oj.leetcode.com/problems/valid-number/
解题思路:细节题,要把所有的例外的情况排除
参考:/article/4999853.html
注意事项:
1. 前后空格
2."+","-"号
3. "e"和"E"的出现位置
4."."小数点的出现位置
5. "1.",".34","+.1"也被认为是正确的
6."012"认为是正确的,即前导0没关系
《leetcode题解》中的解法仍然没有看懂,是用有限状态自动机来做的,但是看起来更简练,有时间了这个代码还是很值得研究一下的,有利于以后解这种问题,有限状态机是个很有用的工具。
#include<iostream> using namespace std; bool isNumber(const char *s) { while(*s==' ') ++s; if(*s=='+' || *s=='-') ++s; if(*s=='\0') return false; bool dot=false,exp=false,sign=false,digit=false,space=false; while(*s!='\0') { switch(*s) { case '.': if(dot==true || (!isdigit(*(s+1)) && digit==false) ||space==true ||exp==true) return false; else dot=true; break; case 'e':case'E': if(exp==true || digit==false) return false; else { exp=true; if(*(s+1)=='+' || *(s+1)=='-') ++s; if(!isdigit(*(s+1))) return false; } break; case ' ': space=true; break; default: if(isdigit(*s)) { if(space==true) return false; else digit=true; } else return false; break; } ++s; } return true; } int main() { string s=" 3e3 "; cout<<isNumber(s.c_str())<<endl; system("pause"); return 0; }
相关文章推荐
- LeetCode65 Valid Number 解题报告
- leetcode-65-Valid Number
- LeetCode(65) Valid Number
- [leetcode] Valid Number
- LeetCode - Valid Number - Frequent
- [LeetCode] Valid Number
- LeetCode: Valid Number
- leetcode ||65、 Valid Number
- [leetcode]Valid Number
- LeetCode 第 65 题(Valid Number)
- Leetcode_65 Valid Number
- LeetCode-Valid Number-合法数字-状态机
- [leetcode]Valid Number
- Leetcode NO.65 Valid Number
- [LeetCode]Valid Number
- LeetCode Online Judge 题目C# 练习 - Valid Number
- LeetCode-Valid Number - 有限状态机
- [LeetCode]Valid Number
- LeetCode——Valid Number
- LeetCode - Valid Number