LEETCODE: Valid Number
来源:互联网 发布:网络应急演练报告 编辑:程序博客网 时间:2024/06/05 08:03
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.
比较麻烦的一道题,要不断的实验和修正。因为我也不知道什么样的格式算是正确的数字。class Solution {public: bool isDigit(const char *ch) { return *ch >= '0' && *ch <= '9'; } bool allspace(const char *ch) { while(*ch != '\0') { if(*ch != ' ') return false; ch ++; } return true; } bool isNumber(const char *s) { int ii = 0; // Remove the spaces in the front. while(*s == ' ') { s ++; } // Skip '+' or '-'. if(*s == '+' || *s == '-') { s ++; } // If nothing input, return false; if(*s == '\0') return false; // hasdleftnum represent has number. Or if has dot, represent has left number of the dot. // hasdrightnum represent has number after the dot. bool hasdleftnum = false; bool hasdrightnum = false; bool hasDot = false; // Process number before e. while(*s != '\0' && *s != 'e' && *s != 'E') { if(isDigit(s)){ s ++; if(hasDot) hasdrightnum = true; else hasdleftnum = true; continue; } if(*s == '.') { s ++; if(hasDot) return false; hasDot = true; continue; } if(*s == ' ') { if(allspace(s) && (hasdleftnum || hasdrightnum)) return true; } return false; } // If has dot, but no numbers, return false. if(hasDot && !hasdrightnum && !hasdleftnum) return false; // If is at end return true; if(*s == '\0') return true; //Process number after e. bool hasrightnum = false; if(*s == 'e' || *s == 'E') { s ++; if(*s == '+' || *s == '-') s ++; while(*s != '\0') { if(isDigit(s)) { s ++; hasrightnum = true; continue; } if(*s == ' ') { if(allspace(s) && hasrightnum && (hasdleftnum || hasdrightnum)) return true; } return false; } } // If has e, and both left and right of e has number, return true. if((hasdleftnum || hasdrightnum) && hasrightnum) return true; 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)
- iOS开发之手势识别(一)
- centos6.2桌面菜单的编辑和配置
- 约会应用Blinq运用iBeacon玩新花样
- 浏览器兼容问题
- java 利用内省实现bean和map的转换
- LEETCODE: Valid Number
- wap页面在微信内置浏览器浏览遇到的问题
- eclipse + pydev
- Build kernel时make oldconfig、menuconfig的作用
- 添加计时器功能
- MFC添加背影图片
- 完全背包问题
- Android开启应用时自动创建快捷方式
- FrameWork之View的绘制过程(下)