【學(xué)習(xí)打卡】第19天 數(shù)據(jù)結(jié)構(gòu)和算法
標(biāo)簽:
算法與數(shù)據(jù)結(jié)構(gòu)
图
有效数字(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;
};
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦