65. Valid Number
来源:互联网 发布:秋水南风 捏脸数据成男 编辑:程序博客网 时间:2024/06/13 21:17
题目:
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.
解析:
本题分很多状态:
0初始无输入或者只有space的状态
1输入了数字之后的状态
2前面无数字,只输入了Dot的状态
3输入了符号状态
4前面有数字和有dot的状态
5'e' or 'E'输入后的状态
6输入e之后输入Sign的状态
7输入e后输入数字的状态
8前面有有效数输入之后,输入space的状态
共9种状态了,难设计的是6,7,8状态。
分好之后就好办了,设计出根据输入进行状态转换就OK了。
代码:
class Solutionl
{
public:
bool isNumber(const char*s)
{
enum InputType
{
INVALID,//0
SPACE,//1
SIGN,//2
DIGIT,//3
DOT,//4
EXPONENT,//5
NUM_INPUTS // 6
};
int transitionTable[][NUM_INPUTS] =
{
-1,0,3,1,2, -1,//next statesforstate0
-1,8, -1,1,4,5,//next statesforstate1
-1, -1, -1,4, -1, -1,//next statesforstate2
-1, -1, -1,1,2, -1,//next statesforstate3
-1,8, -1,4, -1,5,//next statesforstate4
-1, -1,6,7, -1, -1,//next statesforstate5
-1, -1, -1,7, -1, -1,//next statesforstate6
-1,8, -1,7, -1, -1,//next statesforstate7
-1,8, -1, -1, -1, -1,//next statesforstate8
};
intstate =0;
while (*s != '\0')
{
InputType inputType = INVALID;
if (isspace(*s))
inputType = SPACE;
elseif (*s == '+' || *s == '-')
inputType = SIGN;
elseif (isdigit(*s))
inputType = DIGIT;
elseif (*s == '.')
inputType = DOT;
elseif (*s == 'e' || *s == 'E')
inputType = EXPONENT;
state = transitionTable[state][inputType];
if (state == -1)
return false;
else
++s;
}
returnstate ==1 ||state ==4 ||state ==7 ||state ==8;
}
};
- LeetCode --- 65. Valid Number
- [Leetcode] 65. Valid Number
- [LeetCode]65.Valid Number
- 65. Valid Number
- Leetcode-65.Valid Number
- 65. Valid Number
- 【leetcode】65.Valid Number
- leetcode 65. Valid Number
- LeetCode 65. Valid Number
- Leetcode 65. Valid Number
- 65. Valid Number
- 65. Valid Number
- LeetCode 65. Valid Number
- LeetCode - 65. Valid Number
- 65. Valid Number
- [LeetCode] 65. Valid Number
- leetcode 65.Valid Number
- 65. Valid Number
- MvvM_Xamarin Service Location and Inversion of Control
- "QString" to "const char*"
- 论Python的先进性!!!
- Android 浅谈 ViewPager与Fregment使用
- MySQL函数大全及用法示例
- 65. Valid Number
- 解析Json对象数组
- C# 中的委托和事件(详解)
- 编码问题导致python脚本运行时出错: 没有那个文件或目录
- c++之多态
- 2641 2016东莞市特长生考试 游戏问题
- find命令
- Linux面试题汇总
- zTree取消某个节点的选中状态