博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Valid Number
阅读量:5951 次
发布时间:2019-06-19

本文共 1390 字,大约阅读时间需要 4 分钟。

题解


题目描述

Valid Number

即判断某个字符串是否合法的数字表达式。
如:

  • 2e10,合法。
  • 75.0.,非法。
  • 0e,非法。
  • 0.1 ,合法。

题解

基于规则与状态判断。可利用二维数组模拟状态转移图,又或是利用变量记录状态。时间复杂度为O(N),空间复杂度为O(1)

代码

class Solution {public:    bool isNumber(std::string str) {        int i = 0, len = str.size(), exponent = 0, decimal = 0, c = 0;        if (i == len) return false;        while (str[i] == ' ') if (++i == len) return false;        if (str[i] == '+' || str[i] == '-') if (++i == len) return false;        if (str[i] == '.') {            if (++i == len) return false;            decimal = 1;        }        if (str[i] < '0' || str[i] > '9') return false;        for (++i; i < len; )            if (str[i] >= '0' && str[i] <= '9') {                ++i;            } else if (str[i] == 'e' || str[i] == 'E') {                if (++exponent > 1) return false;                if (++i == len) return false;                if (str[i] == '+' || str[i] == '-') if (++i == len) return false;            } else if (str[i] == '.') {                if (++decimal > 1 || exponent) return false;                if (++i == len) return true;            } else if (str[i] == ' ') {                if (str[i - 1] != '.' && (str[i - 1] < '0' || str[i - 1] > '9')) return false;                while (++i < len) if (str[i] != ' ') return false;                return true;            } else {                return false;            }        return true;    }};

总结

主要应用了有限状态机的思想。

转载地址:http://blsxx.baihongyu.com/

你可能感兴趣的文章
vmvare centos 7.0 root密码忘记后重置及总结
查看>>
Java学习-集合的理解
查看>>
iOS验证码倒计时(GCD实现)
查看>>
iOS中的过滤器和正则表达式(NSPredicate,NSRegularExpression)
查看>>
java ee 5周 ajax
查看>>
canvas和svg
查看>>
结对:复利美化版
查看>>
HDU_2689_Sort it
查看>>
urllib模块使用笔记
查看>>
mysql 连接慢的问题(超过了1秒)
查看>>
1297. [SCOI2009]迷路【矩阵乘法】
查看>>
Linux嵌入式GDB调试环境搭建
查看>>
安全性测试要点转摘
查看>>
java分析jvm常用指令
查看>>
【Linux】Linux 在线安装yum
查看>>
oracle 管理操作 (转)
查看>>
POJ 1836, Alignment
查看>>
前端工程化
查看>>
Javascript模块化编程(三):require.js的用法 (转)
查看>>
html_01之基础标签
查看>>