Valid Number
来源:互联网 发布:socket 的类型 知乎 编辑:程序博客网 时间:2024/06/05 04:56
问题来源
问题描述
Validate if a given string is numeric.
Some examples:
"0" => true" 0.1 " => true"abc" => false"1 a" => false"2e10" => true
Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.
问题分析
问题意图十分明显,便是判断一个给定的字符串是不是一个数字。此题的标准解法应该是使用DFA进行解题。但是具体到实际中来还是看大家具体的使用,不用拘泥于传统。所以这里我就没有使用DFA来解题,而是直接分析。首先是排除首尾空格,这个c++的string类已经为我们提供了很好的搜索方法。接着排除头部的符号位,剩下的字符串就需要我们一步步排查。在碰到指数‘e’之前,我们可以简单的判断当前字符是否为 0-9 的数字或者为小数点。注意到,.2
和2.
是可以被判断为数字的,所以我们无需担忧小数点出现的位置。当碰到指数之后便采用另外一套判断方案:指数后面第一个位可以为符号位,其后不能带有小数点,只能为数字。综上判断即可解题。
解决代码
class Solution {public: bool isNumber(string s) { auto realStart = s.find_first_not_of(' '); auto realEnd = s.find_last_not_of(' '); int num_count = 0, exp_count = 0, point_count = 0; bool exp_flag = false; if (s[realStart] == '+' || s[realStart] == '-') realStart++; for (auto i = realStart; i <= realEnd; i++) { if (exp_flag) { if (exp_count == 0 && num_count == 0 && (s[i] == '+' || s[i] == '-')) { exp_count = 1; } else if (s[i] <= '9' && s[i] >= '0') { num_count++; } else { return false; } } else { if (s[i] == 'e') { if (num_count == 0) return false; exp_flag = true; num_count = 0; } else if (s[i] <= '9' && s[i] >= '0') { num_count++; } else if (s[i] == '.') { point_count++; } else { return false; } } } if (num_count < 1 || point_count > 1) return false; return true; }};
阅读全文
0 0
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Android实现滑动布局使TitleBar文本渐变色
- springboot 获取上下文代码 ApplicationContextAware
- 架构师之路-如何构建rest接口的安全性访问(dubbox+oatuh2+rest)
- Internet上的网络层
- python3配置文件模块configparser.ConfigParser
- Valid Number
- Shiro HelloWord
- SQL的四种连接-左外连接、右外连接、内连接、全连接
- 国内大公司的开源项目一览表
- 电子日历
- LeetCode343
- RedHat Linux下以yum方式安装Mysql5.6,修改默认的安装路径,以及完全卸载Mysql
- 机器学习基石-02-2-PLA何时停下来?
- PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明