您的位置:首页 > 其它

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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: