图
有效数字(leetcode - 65)
给你一个字符串 s ,如果 s 是一个 有效数字 ,请返回 true 。
- 构建一个表示状态的图
- 遍历字符串,并沿着图走,如果到了某节点无路可走就返回false
- 遍历结束,如走到3、5、6,就返回true,否则返回false
var isNumber = function(s) {
const graph = {
0: {'blank': 0, 'sign': 1, 'dot': 2, 'digit': 6},
1: {'digit': 6, 'dot': 2},
2: {'digit': 3},
3: {'digit': 3, 'e': 4},
4: {'digit': 5, 'sign': 7},
5: {'digit': 5},
6: {'digit': 6, 'dot': 3, 'e': 4},
7: {'digit': 5}
}
let state = 0;
for(let c of s.trim()) {
if(c >= '0' && c<='9'){
c = 'digit';
}else if(c === ' ') {
c = 'blank';
}else if(c === '+' || c==='-') {
c = 'sign';
}else if(c === '.') {
c = 'dot';
}else if(c === 'e' || c === 'E') {
c = 'e';
}
state = graph[state][c];
if(state === undefined) {
return false;
}
}
if(state === 3 || state === 5 || state === 6) {
return true;
}
return false;
};
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦