leetcode-65-Valid Number
来源:互联网 发布:阿凡达妹妹实力知乎 编辑:程序博客网 时间:2024/06/11 18:47
#include <iostream>#include <string>using namespace std;/* 判断合法数字。 有三种合法数字:(正、负) 1. 整数 2. 小数 .5也算合法 小数点的前面不能有小数点和e 3.也算合法。。。 3. 指数 2e+20算不算合法 2e(10+5)应该没有那么复杂 2.5e19也是合法的 e之前可以有小数点,但是不能有e 允许前后有空格。 */class Solution {public: bool isNumber(string s) { int len = int(s.length()); int i = 0; bool isFloat = false, isExp = false; //开头有空格 while (s[i] == ' ') { i++; } //不是数字开头 if (s[i] < '0' || s[i] > '9') { //开头可以是小数点 if (s[i] == '.') { //不过要注意不能同时是结尾 . + if (i == len - 1) { return false; } //".e1"不能直接接着e isFloat = true; } else { //正负符号 if (s[i] != '+' && s[i] != '-') { return false; } } } i++; while (i < len) { //判断不是数字的情况,指数或小数 if (s[i] < '0' || s[i] > '9') { //非法字符 if (s[i] != '.' && s[i] != 'e') { //正负号的前一个一定是e if (s[i] == '+' || s[i] == '-') { if (s[i - 1] != 'e') { return false; } //正负号不能在结尾 if (i == len -1) { return false; } } else if (s[i] == ' ') { //结尾都是空格也合法 int j = i + 1; while (j < len) { if (s[j] != ' ') { return false; } j++; } //但是前面不是数字的就不行 10e这种算不算合法 if (s[i - 1] == 'e') { return false; } //只有小数点和空格的也不行 if (i == 1 && s[0] == '.') { return false; } return true; } else { return false; } } else if (s[i] == '.') { //小数点 //小数点前面有小数点或e if (isFloat || isExp) { return false; } //至少有一边是数字 if (s[i - 1] < '0' || s[i - 1] > '9') { if (i < len - 1) { if (s[i + 1] < '0' || s[i + 1] > '9') { return false; } } else { return false; } } isFloat = true; } else { //e //e在结尾 或 e前面有e ".e58" e前面没有数字 if (i == len - 1 || isExp || (i == 1 && (s[0] < '0' || s[0] > '9'))) { return false; } isExp = true; } } i++; } return true; }};int main(int argc, const char * argv[]) { Solution s; string test = " 4e+"; cout << s.isNumber(test) << endl; return 0;}暂时显得有点乱,待改写。
0 0
- leetcode ||65、 Valid Number
- LeetCode #65 Valid Number
- leetcode 65: Valid Number
- Leetcode#65||Valid Number
- leetcode|Valid Number(65)
- leetcode-65-Valid Number
- LeetCode 65 - Valid Number
- LeetCode 65 Valid Number
- Leetcode 65 Valid Number
- leetcode-65 valid number
- LeetCode 65 Valid Number
- leetcode 65 Valid Number
- Leetcode 65:Valid Number
- [LeetCode 65] Valid Number Solution
- Leetcode NO.65 Valid Number
- LeetCode(65) Valid Number
- [leetcode-65]Valid Number(C语言)
- Leetcode algorithms 第 65 题:Valid Number。
- [Guava源码日报]Guava类库简介
- 【安装虚拟机和linux系统ubuntu14.04遇到的问题】
- LeetCode笔记:Move Zeros[Difficulty: Easy]
- ZOJ 2770 Burn the Linked Camp【差分约束 SPFA】
- 【IPC】管道和FIFO
- leetcode-65-Valid Number
- 中里巴人-求医不如求己(健康好书)
- HDU Wooden Sticks
- Mac OS Locate 查找文件指令
- iOS陆先森开发随笔(四)tablview点击push到下一个页面,pop出来时位置下移问题
- 构造函数,重载方法,继承
- hdu4521 线段树+dp
- 如何去掉XP系统中文件夹的只读属性
- Android窗口机制