LeetCode-65-Valid Number 脑残暴力
2017-09-20 19:55
543 查看
class Solution {
public:
bool isNumber(string s) {
enum InputType {
INVALID, SPACE, SIGN, DOT, E, DIGIT, LEN
};
int trans[][LEN] = {
{-1, 0, 1, 2, -1, 3},
{-1, -1, -1, 2, -1, 3},
{-1, -1, -1, -1, -1, 4},
{-1, 5, -1, 4, 6, 3},
{-1, 5, -1, -1, 6, 4},
{-1, 5, -1, -1, -1, -1},
{-1, -1, 7, -1, -1, 8},
{-1, -1, -1, -1, -1, 8},
{-1, 5, -1, -1, -1, 8}
};
int state = 0;
int p=0;
while (p<s.length()) {
InputType input;
if (isspace(s[p])) {
input = SPACE;
} else if (s[p] == '+' || s[p] == '-') {
input = SIGN;
} else if (s[p] == '.') {
input = DOT;
} else if (s[p] == 'e' || s[p] == 'E') {
input = E;
} else if (isdigit(s[p])) {
input = DIGIT;
} else {
input = INVALID;
}
state = trans[state][input];
if (state == -1) {
return false;
}
p++;
}
return state == 3 || state == 4 || state == 5 || state == 8;
}
};
public:
bool isNumber(string s) {
enum InputType {
INVALID, SPACE, SIGN, DOT, E, DIGIT, LEN
};
int trans[][LEN] = {
{-1, 0, 1, 2, -1, 3},
{-1, -1, -1, 2, -1, 3},
{-1, -1, -1, -1, -1, 4},
{-1, 5, -1, 4, 6, 3},
{-1, 5, -1, -1, 6, 4},
{-1, 5, -1, -1, -1, -1},
{-1, -1, 7, -1, -1, 8},
{-1, -1, -1, -1, -1, 8},
{-1, 5, -1, -1, -1, 8}
};
int state = 0;
int p=0;
while (p<s.length()) {
InputType input;
if (isspace(s[p])) {
input = SPACE;
} else if (s[p] == '+' || s[p] == '-') {
input = SIGN;
} else if (s[p] == '.') {
input = DOT;
} else if (s[p] == 'e' || s[p] == 'E') {
input = E;
} else if (isdigit(s[p])) {
input = DIGIT;
} else {
input = INVALID;
}
state = trans[state][input];
if (state == -1) {
return false;
}
p++;
}
return state == 3 || state == 4 || state == 5 || state == 8;
}
};
相关文章推荐
- leetcode 65: Valid Number
- LeetCode 第 65 题(Valid Number)
- [LeetCode]65 Valid Number
- LeetCode65——Valid Number
- [leetcode-65]Valid Number(C语言)
- LeetCode 第 65 题(Valid Number)
- Leetcode--65. Valid Number
- leetcode[65]Valid Number
- Leetcode 65 Valid Number
- LeetCode 65 Valid Number
- LeetCode 65 Valid Number
- LeetCode65——Valid Number(使用DFA)来判断字符串是否为数字
- leetcode 65 Valid Number
- LeetCode65 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