LeetCode --- Valid Number
2015-03-15 22:21
267 查看
Validate if a given string is numeric.
Some examples:
这是题目地址
我是用自动机解决的,需要吐槽的是,LeetCode给的测试用例太全了,我的状态转移改了几次才好:
Some examples:
"0"=>
true
" 0.1 "=>
true
"abc"=>
false
"1 a"=>
false
"2e10"=>
true
这是题目地址
我是用自动机解决的,需要吐槽的是,LeetCode给的测试用例太全了,我的状态转移改了几次才好:
/** * * 基于自动机的数字验证 * base on Finite Automata Machine ; */ bool isNumber(char *s) { int state = 0; while(*(s) == ' ') s++ ; if(*s == '+' || *s == '-') s++; if(*s == '.' && *(s + 1) == '\0') return false ; else if(*s == '.' && *(s + 1) == ' ') return false ; else if(*s == '.' && (*(s + 1) == 'E' || *(s + 1) == 'e')) return false ; while(*s != '\0') { switch(state){ case 0 : if(isdigit(*s)) {state = 1; s++;} else if(*s == '.') {state = 2 ; s++;} else if(*s == ' ') {state = 7;s++;} else goto Exit ; break ; case 1 : if(isdigit(*s)) {state =1; s++ ;} else if (*s == '.') {state =2 ; s++;} else if (*s == 'E' || *s == 'e') {state =4 ; s++;} else if(*s == ' ') {state = 7;s++;} else goto Exit ; break; case 2 : if(isdigit(*s)) {state =3 ;s++;} else if (*s == 'E' || *s == 'e') {state =4 ; s++;} else if(*s == ' ') {state = 7;s++;} else goto Exit ; break; case 3 : if(isdigit(*s)) {state = 3 ; s++;} else if(*s == 'E' || *s == 'e') {state =4 ; s++;} else if(*s == ' ') {state = 7;s++;} else goto Exit; break; case 4 : if(isdigit(*s)) {state = 6 ; s++;} else if(*s == '+' || *s == '-') {state = 5; s++;} else goto Exit; break; case 5 : if(isdigit(*s)) {state = 6 ; s++;} else if(*s == ' ') {state = 7;s++;} else goto Exit; break; case 6 : if(isdigit(*s)) {state = 6 ; s++;} else if(*s == ' ') {state = 7;s++;} else goto Exit; break; case 7 : if(*s != ' ') goto Exit ; else s++; break ; } } if(state == 0 || state == 4 || state == 5 ) return false ; return true; Exit : return false ; }
相关文章推荐
- LeetCode:valid Number
- 【leetcode】Valid Number
- [LeetCode] Valid Number
- leetcode:Valid Number
- LeetCode 65 - Valid Number
- leetcode -- Valid Number -- Math难题,要用自动机,可以先不看
- leetcode-Valid Number
- LeetCode || Valid Number
- leetcode第一刷_Valid Number
- [leetcode]Valid Number
- [LeetCode] Valid Number
- leetcode_065 Valid Number
- leetcode-Valid Number
- [LeetCode][JavaScript]Valid Number
- [LeetCode] Valid Number
- [LeetCode 65] Valid Number (通过率最低的一题)
- [LeetCode]Valid Number
- 【LeetCode】Valid Number 解题报告
- leetcode - Valid Number
- LeetCode-Valid Number - 有限状态机