leetcode - Valid Number
来源:互联网 发布:网络传奇游戏排行榜 编辑:程序博客网 时间:2024/06/11 14:45
题目:
Valid Number
Validate if a given string is numeric.
Some examples:"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
class Solution {public:bool isNumber(string s) {if (s.empty())return false;//删除开头和结尾的空格//删除开头空格if (s[0] == ' '){int i = 1;while (i<s.size() && s[i] == ' ')++i;s.erase(s.begin(), s.begin() + i);}//删完开头空格后若为空,则返回假if (s.empty())return false;int size = s.size();//删除结尾空格if (s[size - 1] == ' '){int i = size - 2;while (i >= 0 && s[i] == ' ')--i;if (i<0)return false;s.erase(s.begin() + i + 1, s.end());}//删除结尾空格后,若为空或以'e'开头,返回假if (s.empty() || s[0] == 'e' || s[0] == 'E')return false;//若仍然有空格,返回假if (s.find(" ") != string::npos)return false;size = s.size();int index = 0;if (s[index] == '+' || s[index] == '-')++index;//只有加减号,返回假if (index == size)return false;//若第一个小数点前有数字,docbeforenum为真bool docbeforenum = false;if (s[index] >= '0' && s[index] <= '9')docbeforenum = true;scanNumber(s, index);//一个整数,返回真if (index == size)return true;bool res = true;//小数if (s[index] == '.'){++index;//'.'是字符串最后一位时,'.'前有数字则返回真,否则返回假if (index == size){return docbeforenum;}//'.'后紧跟着非数字时if (s[index]<'0' || s[index]>'9'){if ((s[index] == 'e' || s[index] == 'E') && docbeforenum){// “数字.e” 的形式,继续判断}elsereturn false;}scanNumber(s, index);//小数的形式,返回真if (index == size)return true;if (s[index] == 'e' || s[index] == 'E')res = isExp(s, index);}else if (s[index] == 'e' || s[index] == 'E'){// 'e'前没有数字,返回假if (docbeforenum == false)return false;res = isExp(s, index);}elseres = false;return res && s[index] == '\0';}//遇到数字则往后走void scanNumber(const string &s, int &index){int size = s.size();while (index<size && s[index] >= '0' && s[index] <= '9')++index;}//判断以'e'开头的字符串是否能代表指数bool isExp(const string &s, int &index){++index;int size = s.size();//只有一个'e',返回假if (index == size)return false;if (s[index] == '+' || s[index] == '-')++index;//'e'后没有数字,返回假if (index == size || s[index]<'0' || s[index]>'9')return false;scanNumber(s, index);return true;}};
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)
- sgu258:Almost Lucky Numbers(数位DP)
- java序列化
- Android-带清除按钮的输入框实现
- fatal: Not a git repository (or any parent up to mount parent /media) Stopping at filesystem boundar
- 双目视觉测量的,极线匹配
- leetcode - Valid Number
- DOM性能瓶颈与Javascript性能优化
- java 属性拷贝工具类
- iOS读取通讯录
- Python深入:02浅拷贝深拷贝
- db2 建库,建表空间,索引空间的一点参考
- eclipse大小写转换快捷键
- std::function 和 std::bind
- Leetcode[141]-Linked List Cycle