Leetcode之Valid Number
来源:互联网 发布:游戏源码怎么用 编辑:程序博客网 时间:2024/05/19 16:36
题目:
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.
要写对这题着实不容易,很多细节需要考虑。先看看测试用例有哪些,然后再写就比较有针对性。最后看看哪些test case错了,再修一下bug。 C++ Code
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
class Solution
{
public:
bool isNumber(const char *s)
{
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (s == NULL)
return false;
while(isspace(*s))
s++;
if (*s == '+' || *s == '-')
s++;
bool eAppear = false;
bool dotAppear = false;
bool firstPart = false;
bool secondPart = false;
bool spaceAppear = false;
while(*s != '\0')
{
if (*s == '.')
{
if (dotAppear || eAppear || spaceAppear)
return false;
else
dotAppear = true;
}
else if (*s == 'e' || *s == 'E')
{
if (eAppear || !firstPart || spaceAppear)
return false;
else
eAppear = true;
}
else if (isdigit(*s))
{
if (spaceAppear)
return false;
if (!eAppear)
firstPart = true;
else
secondPart = true;
}
else if (*s == '+' || *s == '-')
{
if (spaceAppear)
return false;
if (!eAppear || !(*(s - 1) == 'e' || *(s - 1) == 'E'))
return false;
}
else if (isspace(*s))
spaceAppear = true;
else
return false;
s++;
}
if (!firstPart)
return false;
else if (eAppear && !secondPart)
return false;
else
return true;
}
};
{
public:
bool isNumber(const char *s)
{
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (s == NULL)
return false;
while(isspace(*s))
s++;
if (*s == '+' || *s == '-')
s++;
bool eAppear = false;
bool dotAppear = false;
bool firstPart = false;
bool secondPart = false;
bool spaceAppear = false;
while(*s != '\0')
{
if (*s == '.')
{
if (dotAppear || eAppear || spaceAppear)
return false;
else
dotAppear = true;
}
else if (*s == 'e' || *s == 'E')
{
if (eAppear || !firstPart || spaceAppear)
return false;
else
eAppear = true;
}
else if (isdigit(*s))
{
if (spaceAppear)
return false;
if (!eAppear)
firstPart = true;
else
secondPart = true;
}
else if (*s == '+' || *s == '-')
{
if (spaceAppear)
return false;
if (!eAppear || !(*(s - 1) == 'e' || *(s - 1) == 'E'))
return false;
}
else if (isspace(*s))
spaceAppear = true;
else
return false;
s++;
}
if (!firstPart)
return false;
else if (eAppear && !secondPart)
return false;
else
return true;
}
};
0 0
- Leetcode之Valid Number
- leetcode:字符串之Valid Palindrome && Palindrome Number
- LeetCode进阶之路(Valid Number)
- Leetcode之Valid Triangle Number 问题
- 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
- [cocos2d-x][游戏开发]通过cocos2d-x实现简易飞机大战 08.游戏界面 碰撞检测
- LeetCode-Path Sum
- 打造自己的js库1 -- dom操作之元素的拖放操作
- Javascript推导Y-Combinator (来自Jim Weirich)
- RocketMQ原理解析-consumer 5.push消费-顺序消费消息
- Leetcode之Valid Number
- RocketMQ原理解析-consumer 6.pull消息消费
- RocketMQ原理解析-consumer 7.shutdown
- JDBC中的接口PreparedStatement的用法
- [cocos2d-x][游戏开发]通过cocos2d-x实现简易飞机大战 09.游戏界面 道具
- RocketMQ原理解析-broker 1. broker的启动
- Linux进程的睡眠和唤醒简析
- 去哪儿网笔试题
- RocketMQ原理解析-broker 2.消息存储