XnMatrix web开发 jsf react脚手架 electron教程 hadoop入门书籍 cmd查看mysql版本 xcode打包 时间戳java 查看mysql是否启动 mysql将时间戳转换成日期 python新手教程 python获取时间戳 java接口 java继承 java集合框架 java字符串查找 javalist java异常处理 sql行转列 给视频加字幕的软件 深渊碎片 js正则匹配字符串 明解c语言 幽灵行动多少钱 万能低格工具还原u盘 linux解压命令 淘宝退货怎么上门取件 js绑定事件的方法 mysql关联查询 php单例模式 编程开发软件 ppt分节 dnf不知火刷图加点 小米兰亭 小程序生命周期 字符串去重 链克口袋国际版 fstat ida下载
当前位置: 首页 > 学习教程  > 编程语言

65. 有效数字(JavaScript版)

2020/11/24 9:26:40 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

题目: 验证给定的字符串是否可以解释为十进制数字。 例如: "0" > true " 0.1 " > true "abc" > false "1 a" > false "2e10" > true " -90e3 " > true " 1e" > f…

题目:

验证给定的字符串是否可以解释为十进制数字。

例如:

"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true
" -90e3   " => true
" 1e" => false
"e3" => false
" 6e-1" => true
" 99e2.5 " => false
"53.5e93" => true
" --6 " => false
"-+3" => false
"95a54e53" => false

说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。这里给出一份可能存在于有效十进制数字中的字符列表:

数字 0-9
指数 - "e"
正/负号 - "+"/"-"
小数点 - "."
当然,在输入中,这些字符的上下文也很重要。

解题:

var isNumber = function (s) {
  const graph = {
    0: { 'blank': 0, 'sign': 1, '.': 2, 'digit': 6 },
    1: { 'digit': 6, '.': 2 },
    2: { 'digit': 3 },
    3: { 'digit': 3, 'e': 4 },
    4: { 'digit': 5, 'sign': 7 },
    5: { 'digit': 5 },
    6: { 'digit': 6, '.': 3, 'e': 4 },
    7: { 'digit': 5 },
  };


  let state = 0;
  for (c of s.trim()) {
    if (c >= '0' && c <= '9') {
      c = 'dight';
    } else if (c === '') {
      c = 'blank';
    } else if (c === '+' || c === '-') {
      c = 'sign';
    }
    state = graph[state][c]
    if (state === undefined) {
      return false;
    }
  }
  if (state == 3 || state === 5 || state === 6) {
    return true;
  }
  return false;
};

时间复杂度O(n):

n是图的节点数

空间复杂度O(1):

无数组和矩阵

 


本文链接: http://www.dtmao.cc/news_show_400035.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?